Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 烧瓶式潜水器不工作_Python_Python 2.7_Flask_Flask Sqlalchemy_Flask Wtforms - Fatal编程技术网

Python 烧瓶式潜水器不工作

Python 烧瓶式潜水器不工作,python,python-2.7,flask,flask-sqlalchemy,flask-wtforms,Python,Python 2.7,Flask,Flask Sqlalchemy,Flask Wtforms,我有一个非常简单的表单和表格,我正试图提交给你 sqllite表是由此类创建的(这是有效的): 该表单是通过此类生成的: class CountryForm(Form): country = StringField('Country name', validators=[Length(0, 64)]) submit = SubmitField('Submit') 该页面通过视图显示: @main.route('/country', methods=['GET','POST']

我有一个非常简单的表单和表格,我正试图提交给你

sqllite表是由此类创建的(这是有效的):

该表单是通过此类生成的:

class CountryForm(Form):
    country = StringField('Country name', validators=[Length(0, 64)])
    submit = SubmitField('Submit') 
该页面通过视图显示:

@main.route('/country', methods=['GET','POST'])
def show_CountryForm():
    form = CountryForm()
    print 'Form Values',form
    if form.validate_on_submit():
        ctry = Country(country=form.country.data)
        db.session.add(ctry)
        flash('The country has been added.')
        return redirect(url_for('chinese'))
    return render_template("country.html", form=form)
html模板页面为:

{% extends "base.html" %}
{% import "_macros.html" as macros %}

{% block title %}Countries{% endblock %}

{% block page_content %}
<div class="container">
<form method="POST" action="/country">
    <div>
        <label for="country" class="label_control"> 
            Country
        </label>
        <div class="form_control" id="country">
            {{ form.country }}
        </div>
    </div>
    {{ form.submit() }}
</form>
</div>


{% endblock %}
{%extends“base.html”%}
{%import“\u macros.html”作为宏%}
{%block title%}国家{%endblock%}
{%block page_content%}
国
{{form.country}
{{form.submit()}}
{%endblock%}

因此,一切运行正常,没有错误,但记录没有添加到数据库中。任何帮助都将不胜感激。

您这里有两个问题。其中一个原因是您的表单从未进行过验证,因为它没有
form.hidden_tag()
,并且您的表单没有在页面上显示错误。下面添加了令牌和div,用于在发生任何表单错误时显示它们

第二个问题是,您从未将db会话提交到数据库,因此即使表单经过验证,您的数据也不会保存

表单未验证且未显示任何错误:

在表单中,尝试添加
{{form.hidden_tag()}}
,然后表单应该很好地提交。如果不添加该内容,表单将引发错误,因为它不再是有效的XHTML

<div class="container">
<form method="POST" action="/country">
    <div>
        <label for="country" class="label_control"> 
            Country
        </label>
        <div class="form_control" id="country">
            {{ form.hidden_tag() }}
            {{ form.country }}
        </div>
        <div class="form_errors">
           {{ form.errors }}
       </div>
    </div>
    {{ form.submit() }}
</form>
</div>

这里有两个问题。其中一个原因是您的表单从未进行过验证,因为它没有
form.hidden_tag()
,并且您的表单没有在页面上显示错误。下面添加了令牌和div,用于在发生任何表单错误时显示它们

第二个问题是,您从未将db会话提交到数据库,因此即使表单经过验证,您的数据也不会保存

表单未验证且未显示任何错误:

在表单中,尝试添加
{{form.hidden_tag()}}
,然后表单应该很好地提交。如果不添加该内容,表单将引发错误,因为它不再是有效的XHTML

<div class="container">
<form method="POST" action="/country">
    <div>
        <label for="country" class="label_control"> 
            Country
        </label>
        <div class="form_control" id="country">
            {{ form.hidden_tag() }}
            {{ form.country }}
        </div>
        <div class="form_errors">
           {{ form.errors }}
       </div>
    </div>
    {{ form.submit() }}
</form>
</div>

我忘了补充一句,我没有看到一条闪烁的消息说国家被添加了。即使记录没有提交,也不应该显示出来吗?我想是的。这两个动作都没有发生。我忘了补充一句,我没有看到一条闪烁的消息说国家被添加了。即使记录没有提交,也不应该显示出来吗?我想是的。这两个操作都没有发生。您正在使用吗?如果是这样,CSRF保护是有效的,但您没有使用
{{form.hidden_tag()}}
来包含
CSRF_令牌
。这会导致表单引发错误,但您不会在任何地方显示这些错误(例如,
form.errors
)。这就是问题的解决方法。非常感谢。你在用吗?如果是这样,CSRF保护是有效的,但您没有使用
{{form.hidden_tag()}}
来包含
CSRF_令牌
。这会导致表单引发错误,但您不会在任何地方显示这些错误(例如,
form.errors
)。这就是问题的解决方法。非常感谢。
@main.route('/country', methods=['GET','POST'])
def show_CountryForm():
    form = CountryForm()
    print 'Form Values',form
    if form.validate_on_submit():
        ctry = Country(country=form.country.data)
        db.session.add(ctry)
        db.session.commit() # This saves the data.
        flash('The country has been added.')
        return redirect(url_for('chinese'))
    return render_template("country.html", form=form)