簡體   English   中英

Flask 總是發送 post 請求

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM