python - Flask 总是发送 post 请求
问题描述
我已经编写了下面的表单和控制器,但是当页面加载时,页面会自动向我的数据库发送请求。当我单击创建按钮时,如何更改表单或控制器并发送请求。
html代码:
<form method="POST" action="/conference/create">
<div class="field">
<div class="control">
<input class="input is-large" type="text" name="name" placeholder="Your Name" autofocus="">
</div>
</div>
<input class="input is-large" type="text" name="shortname" placeholder="Your Shortname">
</div>
</div>
<div class="field">
<div class="control">
<input class="input is-large" type="text" name="year" placeholder="Year">
</div>
</div>
<button class="button is-block is-info is-large is-fullwidth">Create</button>
</form>
</div>
</div>
{% endblock %}
控制器功能:
@main.route('/conference/create', methods=['POST','GET'])
@login_required
def create_conference():
name = request.form.get('name')
shortname = request.form.get('shortname')
year = request.form.get('year')
startdate = request.form.get('startdate')
enddate = request.form.get('enddate')
submissiondeadline = request.form.get('submissiondeadline')
website = request.form.get('website')
tag = request.form.get('tag')
datem = datetime.today().replace(day=1)
conference = Conference(confid="1", creationdatetime=datem, name=name, shortname=shortname, year=year, startdate=startdate,
enddate=enddate, submissiondeadline=submissiondeadline, creatoruser=12, website=website)
conferenceTag = ConferenceTags("1", tag)
db.session.add(conference)
db.session.commit()
db.session.add(conferenceTag)
db.session.commit()
return render_template('create_conference.html')
顺便说一句,当我这样做时,我只用“POST”更改了控制器的方法参数,这给了我不允许的方法错误。
解决方案
您应该添加一个 if 语句来指定传入请求是 POST 还是 GET 并采取相应措施。
if request.method=='GET':
#load page
elif request.method=='POST':
#update database
推荐阅读
- bash - 带有 I/O 重定向的代码块“{...}”如何工作?
- 3d - 如何查看从 Apple ARKit 2.0 Scanning 3D objects App 导出的 arobject 扩展格式?
- php - 会话被自动销毁(随机)
- reactjs - 在 ReactJS 中删除 Paypal iframe
- javascript - A* 算法返回启发式值 (JavaScript)
- serverless-framework - 无法使用无服务器 1.x 更新现有 lambda
- javascript - socket.io 和 Node 的 Net 模块的区别
- matplotlib - 数据少时如何细化 Weibull 曲线
- tsql - 如何忽略 LIKE 查询中的零宽度空格字符,或解决方法?
- .net-4.6 - 合并/转换 VirtualFileDataObject 和 System.Windows.Forms.DataObject