- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在上传其他字段中的图像时遇到问题。虽然其他字段的数据存在,但图像不存在,因此表单不会被验证。
这里是后端,具体看图片文件字段,标有#IMAGE
from flask import Blueprint, request, render_template, redirect, flash
import os
from flask import current_app as app
from src.models.products.product import Product
from flask_wtf import FlaskForm
from wtforms import StringField, BooleanField, FileField, SubmitField
from wtforms.validators import InputRequired
from flask_wtf.file import FileField, FileRequired
from werkzeug.utils import secure_filename
dash_board_blueprint = Blueprint('dashboard', __name__, template_folder='templates')
class UploadForm(FlaskForm):
name = StringField('Name', validators=[InputRequired()])
category = StringField('Category', validators=[InputRequired()])
sub_category = StringField('Sub Category', validators=[InputRequired()])
size = StringField('Size', validators=[InputRequired()])
variant = StringField('Variant', validators=[InputRequired()])
price = StringField('Price', validators=[InputRequired()])
enable_discount = BooleanField('Enable Discount')
discount_price = StringField('Discount Price', validators=[InputRequired()])
in_stock = BooleanField('In Stock')
stock_amount = StringField('Stock Amount')
text = StringField('Text')
display_popular = BooleanField('Display Popular')
image = FileField(validators=[FileRequired()]) # IMAGE
submit = SubmitField("Add Product")
@dash_board_blueprint.route('/')
def dashboard():
return render_template("dashboard/dashboard2.html", form=UploadForm())
@dash_board_blueprint.route('/upload', methods=['GET', 'POST'])
def upload():
form = UploadForm()
filename = form.image
print("File Name:")
print(filename)
任何类型的验证都会失败并且图像不包含任何内容
这是 HTML:
{% extends "dashboard_base.html" %}
{% block content %}
{% macro render_form(form, action) %}
{% from "_formhelpers.html" import render_field %}
<div id="Product" class="variant-block" style="display: block;">
{% from "_formhelpers.html" import render_field %}
{% import "bootstrap/wtf.html" as wtf %}
{{ wtf.quick_form(form, action=action, extra_classes="size-options", button_map={'submit':'light'}) }}
</div>
{% endmacro %}
<div class="container-fluid">
<div class="row" style="background-color: #FAF6EA !important; height: 125px"></div>
</div>
<div class="container-fluid">
<div class="row">
<!-- *** Product Creation *** -->
<div style="background-color: #FAF6EA !important; " class=" container col-sm-4 mt-3 py-3 pl-5">
{{ render_form(form, url_for('dashboard.upload')) }}
</div>
最佳答案
您是否在表单中设置了enctype="multipart/form-data"
?
Remember to set the enctype of the HTML form to multipart/form-data, otherwise request.files will be empty.
<form method="POST" enctype="multipart/form-data">
...
</form>
你的例子让我相信你正在使用 Flask-Bootstrap 扩展。如果是的话,enctype
应该自动设置为 "multipart/form-data"
如果您没有明确设置它,并且 FileField
是存在于您的表单中( per the docs 。但是,我想知道您声明表单的方式是否导致情况并非如此。您可能想尝试在表单中显式设置 enctype
声明。
关于python - 如何使用 WTForms Quickform 上传图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50168932/
我正在阅读 http://pythonhosted.org/WTForms/但它没有在任何地方定义过滤器函数的接口(interface),就像在 Field() 构造函数的 filters= 关键字参
在我的表单中,我尝试创建一个带有选择的自定义数组字段。 自定义表单字段: class CustomField(Field): widget = TextInput() def _val
我希望使用 Flask-WTForms 制作一个输入表单,其字段根据其他字段中的内容而变化。 例如,假设有一个“输入联系人”复选框。单击该按钮后,将出现(或激活)新字段,用于输入联系人的姓名和电话号码
这是我在 StackOverflow 上的第一篇文章,大家好。 我正在开发博客应用程序来学习 Python 和 Flask,我想在 Google App Engine 上启动它。不幸的是,我在将 WT
我正在尝试将数据从我的FlaskSQLAlChemy数据库自动填充到FlaskForm。以下是我的代码片段:。我想把这种型号的产品自动填充到一种可以接受购买的形式。以下是我的表格:。这是我的路线:。最
我使用的是最新版本的 flask、wtforms 和 Flask-WTForms。 我有一个显示表单的页面,其中一个是带有选项“A”的选择框。 应用程序启动时一切正常。在另一种形式中,我添加了一条名为
我有一个非常基本的 Flask 应用程序: from flask import Flask, render_template from flask_wtf import FlaskForm from
WTForms已更新为 2.3.0有了突破性的变化。我尝试调整其他要求,例如 werkzeug.1.0.0但还没有运气。有没有人找到解决办法? 这是堆栈跟踪: Traceback (most rece
在 WTForms 中,我可以根据数据库中的数据创建自定义验证器吗? 例如,我想显示一个多选字段,用户只能根据他们的帐户类型(存储在数据库中)选择一定数量的值。 预期的行为是这样的: 如果提交了表单,
我目前正在尝试使用 Flask 构建一个简单的 Web 应用程序。有了这个,我也在使用 WTForms,但是我在从表单中获取日期信息并对其进行验证时遇到了问题。 这是表格: from flask_wt
我有一个带有用户登录系统的 flask 应用程序。我现在注意到一些与用于注册和登录网站的电子邮件地址区分大小写相关的问题。 TL;DR 问题:我如何使用 Flask 表单的小写字母并使用它来评估用户是
我要求的其实很简单。我想创建一个包含一些字段和一个提交和一个取消按钮的表单。我想使用 Flask-Bootstrap 的 quick_form 模板函数来降低模板中的开销。我的表格是这样的: from
可能有更好的方法来执行此操作,但我正在尝试使用隐藏表单在 Flask 中使用 WTForms 定义按钮。当我尝试设置值时,这些字段似乎生成了两次。一次使用默认值“”,一次使用模板中设置的值。最终,在发
是否可以在离开字段后但在提交之前验证 WTForm 字段? 例如,在输入用户名后,在用户单击提交之前,验证该字段以查看其是否可用并显示复选标记。 最佳答案 当字段更改时,执行检查并更改相邻节点中的文本
我发现 IntegerField 在为空时不验证。要重现,请复制以下 block : from flask import Flask, render_template_string from flas
我需要将一个对象从我的数据库传递到我的表单,我想从中读取默认值。我当前的代码如下所示: 我的初始化: form = EditEventForm(event) 还有我的表单类: class EditEv
我正在使用 Flask 和 Flask-WTF,我需要创建一个包含多个具有相似结构的 block (子表单)的表单(例如具有一个 SelectField 和一个 TextAreaField 的子表单)
我需要将一个对象从我的数据库传递到我的表单,我想从中读取默认值。我当前的代码如下所示: 我的初始化: form = EditEventForm(event) 还有我的表单类: class EditEv
已经看过this答案,我无法让我的自定义 WTForm 验证器接受另一个参数。 我的代码的结构是我有一个 form_create() 方法,通过以下方式调用: form = other_fil
我在 Web 应用程序中使用 Python 3.7.4 以及 Flask 1.1.1 和 WTforms 2.2.1。 我正在尝试创建DateField像这样: user_birth = DateFi
我是一名优秀的程序员,十分优秀!