Я пишу приложение, используя GAE и Django, в котором я хочу дать пользователю возможность загружать его изображение.Кроме того, я хочу, чтобы это изображение было сохранено как blob в хранилище данных GAE.Я видел много примеров, но ничего конкретного для этого сценария.Хотя я чувствую, что это общая проблема.
Все, что я хочу, - это создать новый продукт, и этот новый продукт должен иметь изображение.
1-я попытка: Я попытался добавить атрибут изображения (db.BlobProperty ()) в модель продукта, и, очевидно, django не включает его в представленную форму.
2-я попытка: Я создалновая сущность с двумя атрибутами (продукт как db.ReferenceProperty () и изображение как db.BlobProperty ()).При этом я пытался работать параллельно с формой django, изменяя HTML-форму django (включая | input type = 'file' name = 'img' / |), ожидая, что я смогу взять изображение из объекта запроса, но у меня снова не получилось.
Это класс продукта:
class Product(db.Model):
id = db.IntegerProperty()
desc = db.StringProperty()
prodCateg = db.ReferenceProperty(ProductCategory)
price = db.FloatProperty()
details = db.StringProperty()
image = db.BlobProperty()
Это форма Django (HTML):
<form action="{%url admin.editProduct product.key.id%}" enctype="multipart/form-data" method="post">
<table>
{{form}}
<tr><td><input type="file" name="img" /></td></tr>
<tr><td><input type="submit" value="Create or Edit Product"></td></tr>
</table>
</form>
Это форма Django (python):
class ProductForm(djangoforms.ModelForm):
class Meta:
model = Product
exclude = ['id']
Это обработчик запросов:
def editProduct(request, product_id):
user = users.GetCurrentUser()
#if user is None:
# return http.HttpResponseForbidden('You must be signed in to add or edit a gift')
product = None
if product_id:
product = Product.get(db.Key.from_path(Product.kind(), int(product_id)))
if product is None:
return http.HttpResponseNotFound('No product exists with that key (%r)' %
product)
form = ProductForm(data=request.POST or None, instance=product)
##########################
# Ambitious undertaking! #
##########################
#if not product_id:
# uploadedImage = get("img")
# photo = Image()
# photo.product = product
# uploadedPhoto = request.FILES['img'].read()
# photo.image = db.Blob(uploadedPhoto)
# image.put()
if not request.POST:
return respond(request, user, 'addprod', {'form': form, 'product': product})
errors = form.errors
if not errors:
try:
product = form.save(commit=False)
except ValueError, err:
errors['__all__'] = unicode(err)
if errors:
return respond(request, user, 'addprod', {'form': form, 'product': product})
product.put()
return http.HttpResponseRedirect('/product')
Как вы можете видеть, обработчик запросов основан на Учебнике по подаркам от Google
Так что, если кто-то может поставить егоМнение я был бы очень благодарен!
Заранее спасибо!