Python flask, при редактировании изображений в формах form.image.data пусто - PullRequest
0 голосов
/ 12 января 2020

У меня есть форма для редактирования объекта, созданного другой формой, форма редактирования не может обновить изображение до нового изображения и будет отображать старые изображения.

при печати form.image.data , он пуст, хотя я загружаю файл изображения.

init .py

def edit_item(itemid):
context = {"message": ""}
item = itemcontroller.get_item_by_UID(itemid)
if(not item):
    abort(404)
form = edit_sales_item(formdata=request.form, obj=item)

if request.method == 'POST' and form.validate():
    f = form.image.data
    print(f)
    print(os.path.exists(PACKAGEDIR + form.UID.data))
    if(f):
        os.remove(ITEMSDIR + form.UID.data)
        f.save(ITEMSDIR + form.UID.data)
    update_form = form.data.copy()
    update_form["image_url"] = ITEMSDIR + form.UID.data

    item2 = itemcontroller.create_and_save_item(update_form)
    if (item2):
        context ={"message":"You have created a new item"}
        itemcontroller.remove_sales_item(item)
        flash("You have updated the item "+ item.get_UID() +" information")
        return redirect(url_for("admin_pages.list_sales_items"))
    else:
        context ={"error":"A error have occured..."}
return render_template('admin/editing/edit_items.html', form=form, message=context, item=item)

forms.py

class edit_sales_item(FlaskForm):
UID = StringField("Unique ID:", validators=[validators.Length(min=3, max=10),DataRequired()])
name = StringField("Name: ", validators=[validators.Length(min=3, max=200) ,DataRequired()])
description = TextAreaField("Description: ", validators=[validators.Length(min=5, max=3000) ,DataRequired()])
price = DecimalField("Price: ", validators=[DataRequired()])# Regexp(
image = FileField("Image of product: ", validators=[FileAllowed(images ,'Image only!')])
stocks = IntegerField("Stocks amount: ",  validators=[validators.NumberRange(min=1),DataRequired()])
submit = SubmitField()

the Шаблоны просто покажут форму.

...