[英]Flask always send post request
我已經編寫了下面的表格和 controller 但是當頁面加載時,頁面會自動向我的數據庫發送請求。 如何更改表單或 controller 並在我單擊創建按鈕時發送請求。
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 %}
controller function:
@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
@main.route('/conference/create', methods=['POST','GET']) @login_required def create_conference(): if request.method == 'POST': 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 'you want to do.' return render_template('create_conference.html')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.