我正在制作博客,我想把它作为草稿或公共帖子提交给我。我给了它两个名字" 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;
视图中有条件的内容是,如果我点击名称为&#39; create_draft&#39;它将表单数据提交到数据库中的Draft表,如果我单击名称为&#39; create_post&#39;然后它提交到Post表。
#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;
此外,当我切换条件的顺序时,它只提交第一个条件列出,但我得到一个400&#34;错误请求&#34;当我尝试在“elif”中提交请求时出错言。
是否有人知道如何在没有400错误的情况下提交具有多个请求选项的路由?