gpt4 book ai didi

python - 使用 GET 而不是 POST 提交 Wtform

转载 作者:太空宇宙 更新时间:2023-11-04 01:18:06 24 4
gpt4 key购买 nike

我正在尝试使用 wtforms、flask 和 bootstrap 制作一个简单的表单,但我的表单提交导致 GET 和表单参数而不是 POST。

我只用 flask 就让它工作了,但是当我切换到从 flask.ext.wtf 导入表单时,使用 form.validate_on_submit 而不是仅仅验证,并使用 flask_bootstrap,但现在提交表单会导致 GET 操作而不是一个 POST Action 。我错过了什么?

这是我在控制台中看到的内容:

GET
127.0.0.1 - - [14/Apr/2014 21:04:10] "GET / HTTP/1.1" 200 -
GET
127.0.0.1 - - [14/Apr/2014 21:04:13] "GET /?csrf_token=None&recipe1=dfsaasdf&recipe2=adfsadfs&submit_button=Submit+Form HTTP/1.1" 200

这是我的完整应用:

from flask import render_template, request, redirect, url_for
from flask.ext.wtf import Form
from wtforms.ext.csrf import SecureForm
from wtforms import TextField, HiddenField, ValidationError, RadioField,\
BooleanField, SubmitField, IntegerField, FormField, validators
from concat.recipe_concatenator import RecipeConcatenator

from flask_bootstrap import Bootstrap
from flask import Flask
from hashlib import md5

app = Flask(__name__)
Bootstrap(app)
app.config['DEBUG'] = True
SECRET_KEY = '1234567890'

class RecipeCompareForm (Form):
recipe1 = TextField('Recipe 1', [])
recipe2 = TextField('Recipe 2')
submit_button = SubmitField('Submit Form')

@app.route('/', methods=['GET', 'POST'])
def compare():
print request.method
form = RecipeCompareForm(csrf_enabled=False)
if form.validate_on_submit():
print "validated"
print form.recipe1.data
message = "blah"
return redirect(url_for('results', message=message))
return render_template('form.html', form=form)

@app.route('/results')
def results():
message = request.args['message']
return render_template('results.html', message=message)

if __name__ == '__main__':
app.run()

模板:

{% extends "bootstrap/base.html" %}

{% import "bootstrap/wtf.html" as wtf %}
{% import "bootstrap/fixes.html" as fixes %}
{% block content %}
<form class="form form-horizontal" role ="form">

{{ form.hidden_tag() }}
{{ wtf.form_errors(form, hiddens="only") }}
{{ wtf.form_field(form.recipe1) }}
{{ wtf.form_field(form.recipe2) }}
{{ wtf.form_field(form.submit_button) }}
</form>
{% endblock %}

最佳答案

如果您没有指定method 属性,则表单默认为GET。要使用 POST,请将 method 属性添加到您的表单标记中,如下所示:

<form class="form form-horizontal" role="form" method="POST">

关于python - 使用 GET 而不是 POST 提交 Wtform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23074758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com