में डिलीट को कैसे संभालें I'm a newbie प्रोग्रामर और Google App Engine और webapp2 आदि में नया है, इसलिए यह एक बहुत ही बुनियादी सवाल हो सकता है।Google App Engine (Python)
मैं ब्लॉबस्टोर में छवियों को स्टोर करने के लिए एक एप्लिकेशन बना रहा हूं। मेरा मॉडल विवरण, blob_key, छवि यूआरएल और तारीख स्टोर करता है।
मैं सबकुछ बचाने में सक्षम हूं, ताकि थोड़ा ठीक हो।
लेकिन अब मैं एक डिलीट बटन बनाना चाहता हूं जो न केवल डेटास्टोर से एक आइटम हटाएगा, बल्कि ब्लॉबस्टोर में सहेजी गई छवि को भी हटा देगा।
मैंने एक हटाएं हैंडलर बनाया है, और एचटीएमएल में मेरे पास एक फॉर्म है, जिस आइटम को मैं हटाना चाहता हूं उसके लिए कुंजी पास कर रहा हूं। DeleteHandler में, मैं डेटास्टोर से आइटम को हटाने के लिए पोस्ट की गई कुंजी का उपयोग कर रहा हूं। मैं ब्लॉबस्टोर में सहेजी गई छवि को हटाने के लिए कुंजी का उपयोग करने की कोशिश भी कर रहा हूं।
अभी तक मुझे डिलीट फॉर्म पोस्ट पर 404 मिल रहा है, और यहां तक कि यदि मैं इसे प्राप्त करता हूं, तो भी मुझे यकीन नहीं है कि क्या मेरा DeleteHandler कार्यक्षमता को संभालने के लिए सही है या नहीं।
किसी भी मदद की बहुत सराहना की जाएगी ..
Main.py:
import os
import urllib
import webapp2
from google.appengine.ext.webapp import template
from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
from google.appengine.api import images
#Models
from google.appengine.ext import db
class ImageItem(db.Model):
description = db.StringProperty(required=True)
img_url = db.StringProperty()
blob_key = blobstore.BlobReferenceProperty()
when = db.DateTimeProperty(auto_now_add=True)
#Handlers (Views)
class MainHandler(webapp2.RequestHandler):
def get(self):
upload_url = blobstore.create_upload_url('/upload')
imgs = db.GqlQuery(
'SELECT * FROM ImageItem '
'ORDER BY when DESC')
imgs_dict = {'imgs': imgs}
self.response.out.write(template.render('main.html',locals()))
class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
f = self.get_uploads('file')[0] # 'file' is file upload field in the form
img =ImageItem(description=self.request.get('description'))
img.blob_key = f.key()
img.img_url = images.get_serving_url(f.key())
img.put()
self.redirect('/')
class DeleteHandler(webapp2.RequestHandler):
def post(self):
key = self.request.get('k')
item = db.get(key)
images.delete(item.blob_key)
item.delete()
self.response.out.write(key)
#URL Routing happens here
app = webapp2.WSGIApplication([('/', MainHandler),
('/upload', UploadHandler),
('/delete', DeleteHandler)],
debug=True)
Main.html:
<form action="{{upload_url}}" method="POST" enctype="multipart/form-data">
<p>
<label for="file">Upload File</label>
<input type="file" name="file" id="file">
</p>
<p>
<label for="description">Description</label>
<input type="text" id="description" name="description">
</p>
<input type="submit" name="submit" value="Submit">
</form>
<ul>
{% for i in imgs %}
<li>
<img src="{{i.img_url}}=s400-c" alt="">
{{i.description }}
</li>
<li>{{i.when }}</li>
<li>
<form action="/delete" method="POST" enctype="multipart/form-data">
<input type="text" name="k" value="{{i.key}}" />
<input type="submit" value="delete">
</form>
</li>
{% endfor %}
</ul>
इस एरिक के साथ आपकी मदद के लिए धन्यवाद। यह अब लगभग काम कर रहा है, सिवाय इसके कि आइटम को ब्लॉबस्टोर से हटाया नहीं जा रहा है। मैंने blobstore.delete (item.key) और blobstore.delete ([item.key]) की कोशिश की है। न तो चाल – user791793
ऐसा लगता है कि मैं आपकी अगली पोस्ट में देखता हूं जिसे आपने समझ लिया था। मैं खुश हूं कि आपका यह चलने लगा। हमें जवाब देने और विवरण जानने के लिए धन्यवाद। –
धन्यवाद एरिक, अपने उत्तर को टिक के साथ चिह्नित करते हुए, जैसा कि आप blobstore.delete (KEY) का उपयोग करने के लिए इंगित करते हुए देखते हैं, यह पता लगाने का एक प्रमुख हिस्सा था – user791793