Flask 总是发送 post 请求

Flask always send post request

我已经编写了以下表单和控制器,但是当页面加载时,页面会自动向我的数据库发送请求。如何更改表单或控制器并在我单击创建按钮时发送请求。

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
@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')