url_for 构建错误
url_for Build Error
我是 Flask 的新手 html。当我尝试在我的 html 代码中使用 action 属性时出现构建错误,我不知道为什么会发生这种情况。
这是我的 html 代码:
<div class="post">
<form method=post action="{{url_for('add_post')}}" ></a>
<input type="text" name="post" placeholder="What's happenig?" />
<input type="submit" value="post" class="post_button" >
</div><!--end of class post-->
还有我的烧瓶:
@app.route('/mk/add_post/<username>' , methods=['POST'])
def add_post():
if request.method == 'POST':
text=request.form('post')
user=session['username']
post(user , text)
p='/mk/main/%s'%username
return redirect(p)
我得到这个错误:
BuildError: ('add_post', {}, None)
有什么想法吗?
您不需要将 url 路径定义为 @app.route('/mk/add_post/<username>' , methods=['POST'])
,因为您正在从会话中获取用户名。这应该有效:
@app.route('/mk/add_post' , methods=['POST'])
def add_post():
...
如果您确实希望坚持 '/mk/add_post/<username>'
。将您的模板更改为:
<form method=post action="{{url_for('add_post', username='mahnoosh')}}" ></a>
注意:另外你忘记添加用户名作为参数。
@app.route('/mk/add_post/<username>' , methods=['POST'])
def add_post(username):
...
我是这样测试的:
python 脚本:
from flask import *
app = Flask(__name__)
@app.route('/mk/add_post/<username>' , methods=['POST'])
def add_post(username):
if request.method == 'POST':
print username
return username
@app.route('/')
def main():
return render_template('so.html')
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True, port=5050)
so.html:
<html>
<div class="post">
<form method=post action="{{url_for('add_post', username='mahnoosh')}}" ></a>
<input type="text" name="post" placeholder="What's happenig?" />
<input type="submit" value="post" class="post_button" >
</div>
</html>
我是 Flask 的新手 html。当我尝试在我的 html 代码中使用 action 属性时出现构建错误,我不知道为什么会发生这种情况。 这是我的 html 代码:
<div class="post">
<form method=post action="{{url_for('add_post')}}" ></a>
<input type="text" name="post" placeholder="What's happenig?" />
<input type="submit" value="post" class="post_button" >
</div><!--end of class post-->
还有我的烧瓶:
@app.route('/mk/add_post/<username>' , methods=['POST'])
def add_post():
if request.method == 'POST':
text=request.form('post')
user=session['username']
post(user , text)
p='/mk/main/%s'%username
return redirect(p)
我得到这个错误:
BuildError: ('add_post', {}, None)
有什么想法吗?
您不需要将 url 路径定义为 @app.route('/mk/add_post/<username>' , methods=['POST'])
,因为您正在从会话中获取用户名。这应该有效:
@app.route('/mk/add_post' , methods=['POST'])
def add_post():
...
如果您确实希望坚持 '/mk/add_post/<username>'
。将您的模板更改为:
<form method=post action="{{url_for('add_post', username='mahnoosh')}}" ></a>
注意:另外你忘记添加用户名作为参数。
@app.route('/mk/add_post/<username>' , methods=['POST'])
def add_post(username):
...
我是这样测试的:
python 脚本:
from flask import *
app = Flask(__name__)
@app.route('/mk/add_post/<username>' , methods=['POST'])
def add_post(username):
if request.method == 'POST':
print username
return username
@app.route('/')
def main():
return render_template('so.html')
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True, port=5050)
so.html:
<html>
<div class="post">
<form method=post action="{{url_for('add_post', username='mahnoosh')}}" ></a>
<input type="text" name="post" placeholder="What's happenig?" />
<input type="submit" value="post" class="post_button" >
</div>
</html>