Python Flask无限重定向循环302

时间:2016-07-15 10:09:36

标签: python python-2.7 flask routing

我目前存在一个问题,即我的一个烧瓶页面属于无限重定向循环:

enter image description here

我已经有很多路线和方法,并且从来没有遇到任何问题。我也不知道如何解决它,这里有功能/路线有这个问题(它是一个简单的邮件功能,甚至无法测试它):

@app.route('/kontakt/', methods=["GET", "POST"])
def kontakt_send():
    form = KontaktMailForm()
    if form.validate_on_submit():
        if form.check.data == 9:
            simplemail.Email(
            from_address = form.absender.data, #request.form["absender"],
            to_address = u"email@email.de",
            subject = u"Nachricht - Kontaktformular von " + form.name.data,
            message = form.nachricht.data #request.form["nachricht"]
            ).send()
            flash("Nachricht erfolgreich versandt")
            return redirect(url_for('kontakt_send'))
        else:
            flash("Was ist 4+5?")
            return redirect(url_for('kontakt_send'))
    else:
        flash("Alle Felder muessen ausgefuellt werden")
        return redirect(url_for('kontakt_send'))
    return render_template('kontakt.html', form=form)

我甚至不知道哪些数据与解决此问题相关,但这里是来自html模板的表单:

<form id="kontaktform" method="POST" enctype="multipart/form-data" action="{{ url_for('kontakt_send') }}">
    {{ form.hidden_tag() }}
  <div class="form-group">
    {{ form.name.label }} <span class="star"> * </span>
    {{ form.name(size=30, class = "form-control", placeholder="z.B. Markus Müller") }} 
  </div>

  <div class="form-group">
    {{ form.absender.label }} <span class="star"> * </span>
    {{ form.absender(class = "form-control", placeholder="z.B. markus.müller@gmx.de") }}  
  </div>

  <div class="form-group">
    {{ form.nachricht.label }} <span class="star"> * </span>
    {{ form.nachricht(size=500, class = "form-control", placeholder="z.B. Ihre Nachricht an uns") }} 
  </div>

  <div class="form-group">
    {{ form.check.label }} <span class="star"> * </span>
    {{ form.check(class = "form-control", placeholder="z.B. 9") }}   
  </div>

  <div class="">
  <button type="submit" class="btn mybtn"> Senden </button>
  </div>

</form>

修改

从其他地方重新获得第二个return redirect(url_for('kontakt_send'))解决了这个问题,但每次我加载页面时都会向我显示flash消息,尽管我没有提交表单,但这怎么可能?它通过重新加载页面提交表单

1 个答案:

答案 0 :(得分:1)

xcodebuild -target ‘AppName.xcodeproj’ -scheme ‘AppName’ -configuration “Debug/Release” -sdk iphoneos6.0/5.0/4.0 -arch “armv7 armv7s” CONFIGURATION_BUILD_DIR=’BuildDirectoryName‘ ONLY_ACTIVE_ARCH=NO/YES 检查两件事:

  1. 请求是POST吗?
  2. 帖子正文是否以指定的表格验证?
  3. 如果其中任何一个为假,则else块运行并生成flash消息。由于对所有GET的第一次检查都是假的,因此您将在每个不是表单提交的页面加载上收到flash消息(这也是您具有重定向循环的原因)。当表单未验证时,第二个将为false,从而再次导致flash消息。

    所有if / else块都会导致闪存消息。这就是为什么你在每次请求时得到一个。

相关问题