当前位置: 首页 > 知识库问答 >
问题:

烧瓶WTForm选择字段获取当前选择的项目

单于越
2023-03-14

我有困难在提交时在烧瓶应用程序的WTForm页面中获取当前选择的项目。提交时,form.tableselector.data值始终等于1,无论选择了SseltField中的哪个项目(并且所有选项都具有表单(1,'table_name')1-10中的唯一表id,其中1是整数。

以下是当前代码:

意见。派克

from flask import session

def view(self):
    form = Tableset(request.form)
    if request.method == 'POST' and form.validate():
        #form.tableselector.data always returns 1 no matter which item is selected?
        session['table_id'] = form.tableselector.data

form.py

class MyBaseForm(Form):
    #see https://wtforms.readthedocs.io/en/latest/csrf.html
    class Meta:
        csrf = True
        csrf_class = SessionCSRF
        csrf_secret = app.config.get('SECRET_KEY')

        @property
        def csrf_context(self):
            return session

class Tableset(MyBaseForm):
    tableselector = SelectField(label = 'Table', choices = [], coerce=int, id='select_table')
    submit = SubmitField('Submit')

    def validate(self):
        if len(self.tableselector.choices) == 0:
            return False
        return True

桌面视图。html

<form role="form" action="{{ url_for('app.table_view') }}" method="post">
    {{ form.csrf_token }}
    <div class="form-group">
    {{ form.tableselector.label }} 
    {{ form.tableselector }}
    </div>

我注意到,在调试表单时,wtf元对象csrf属性等于True,因此我知道csrf正在工作。

共有1个答案

秦联
2023-03-14

问题是我在视图中调用了错误的参数。

请参见此处:如何使用Python和Flask获取请求变量的值

使用:

if request.method == 'POST' and form.validate():
    session['table_id'] = request.form.get('tableselector')
 类似资料:
  • 问题内容: 我是Flask的新手,我无法从我的select标签获取值。我试过返回错误请求。但是,当我尝试使用时,返回页将返回一个空白列表“ []”。 我的html: 我的app.py: 抱歉,如果我的帖子格式关闭(这也是Stack Overflow的新功能)。 问题答案: 从您提供的内容中很难确定,但是我相信您需要添加您的元素。 从烧瓶文档中找到对象: 要访问表单数据(在POST或PUT请求中传输

  • 我在选择元素的更改事件上绑定了一个事件: 当变更事件发生时,我如何访问被选中的元素?

  • http://codepen.io/anon/pen/wjzqww?editors=1010

  • 问题内容: 我需要具有2个字段的django modelform,其中第二个字段选择列表取决于在第一个字段中选择的内容。我的模特: 如果vehicle_type设置为 personal, 如何将 make 字段的选择设置为 PERSONAL_MAKES ?我怎样才能做到这一点?在模型级别上可以吗? __ 问题答案: 您可能不能,因为这取决于用户与表单的交互:您的服务器无法预先知道用户将表单发送到浏

  • 问题内容: 我有一个Django应用程序,想要在用户的个人资料中显示多个选择复选框。然后,他们将能够选择多个项目。 这是我的models.py的简化版本: 和我的形式课: 还有我的views.py: 我可以看到POST仅发送一个值: 并且本地vars参数正在发送一个列表: 所有表单字段都显示正确,但是当我提交POST时,我得到一个错误 错误绑定参数7-可能是不受支持的类型。 我是否需要在视图中进一

  • 我正在尝试从一个select表单中获取一个时间值。我在代码中看不到任何错误,尝试更改所有类名和变量,但值仍然没有被get select。(提交表单后我看不到所选的值) 代码添加如下: