使用Flask Python进行werkzeug.routing.BuildError

时间:2015-05-28 08:47:32

标签: python flask

**建议重复的差异,我的错误源于原始代码session['message']=request.form['message']中缺少以下行,其中建议的副本中缺少render_template组件

我正在尝试使用Flask创建用户会话,我并不关心身份验证。我只想要一个他们输入名字的页面,然后将它们重定向到主页面。我尝试按照this link here中的示例进行操作,但我得到了werkzeug.routing.BuildError。总结一下我的python应用程序是:

from flask import Flask, render_template
from flask import request, session, url_for,abort,redirect

app = Flask(__name__)
app.config['SECRET_KEY'] = 'F34TF$($e34D';

@app.route('/')
def home():
    return render_template('index.html')

@app.route('/signup', methods=['POST'])
def signup():
    session['username'] = request.form['username']
    session['message']=request.form['message']
    return redirect(url_for('message'))

@app.route("/message")
def message():
    return render_template("message.html")

if __name__ == '__main__':
    app.run(debug=True)

index.html是:

{% extends "layout.html" %}
{% block content %}
    <h1>Say something</h1>
    <form method="post" action="{{ url_for('signup') }}">
        <p><label>Username:</label> <input type="text" name="username"    required></p>
        <p><button type="submit">Send</button></p>
    </form>
{% endblock %}

layout.html是:

<!doctype html>
<html lang="en">
    <head>
        <title>Say somthing</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
       <link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
    </head>
    <body>
        {% block content %}{% endblock %}
    </body>
</html>

1 个答案:

答案 0 :(得分:1)

您收到该错误是因为您没有名为message的路线,但您正在重定向到该路线。

@app.route('/signup', methods=['POST'])
def signup():
session['username'] = request.form['username']
# Create a message route first
return redirect(url_for('message'))

这是一个名为message

的示例路由
@app.route("/message")
def message():
    return render_template("message.html")