Flask:如何在一个表单/路径路径上有多个提交请求

时间:2017-03-24 17:18:05

标签: python postgresql flask flask-sqlalchemy flask-wtforms

我正在制作博客,我想把它作为草稿或公共帖子提交给我。我给了它两个名字" create_draft"和" create_post"。

每个提交请求都应该将数据发送到不同的数据库表。

问题是我只能在点击“创建草稿”按钮时提交表单,但我收到400错误,说“#34;错误请求"当我点击“提交帖子”按钮时



<form action="{{ url_for('create') }}" method="post" class="well">
    <h2 class="form-signin-heading">Create Blog Post</h2>
    {{ form.hidden_tag() }}
    {{ wtf.form_field(form.title) }}
    {{ wtf.form_field(form.url) }}
    {{ wtf.form_field(form.category) }}
    {{ wtf.form_field(form.body) }}

    <input class="btn btn-lg btn-primary" type="submit" name="create_draft" value="Create Draft">
    <input class="btn btn-lg btn-primary" type="submit" name="create_post" value="Create Post">
</form>
&#13;
&#13;
&#13;

视图中有条件的内容是,如果我点击名称为&#39; create_draft&#39;它将表单数据提交到数据库中的Draft表,如果我单击名称为&#39; create_post&#39;然后它提交到Post表。

&#13;
&#13;
#create posts
@app.route('/dashboard/create', methods=['POST', 'GET'])
@login_required
def create():
	admin = True
	form = PostForm()
	the_id = current_user.get_id()
	the_name = current_user.name
	if form.validate_on_submit():
		if request.form['create_draft'] and request.method == "POST":
			draft = Draft(request.form['title'], request.form['url'], request.form['body'], request.form['category'], the_name)
			db.session.add(draft)
			db.session.commit()
			return redirect(url_for('dashboard'))
		elif request.form['create_post'] and request.method == "POST":
			post = Post(request.form['title'], request.form['url'], request.form['body'], request.form['category'], the_name, the_id)
			db.session.add(post)
			db.session.commit()
			return redirect(url_for('dashboard'))
	return render_template('posts/create.html', form=form, admin=admin)
&#13;
&#13;
&#13;

此外,当我切换条件的顺序时,它只提交第一个条件列出,但我得到一个400&#34;错误请求&#34;当我尝试在“elif”中提交请求时出错言。

是否有人知道如何在没有400错误的情况下提交具有多个请求选项的路由?

0 个答案:

没有答案