我在我的应用上有这条路线:
@app.route('/<buildingSlug>/members/', methods=("GET", "POST"))
我想在该路线上使用url_for,但我找不到方法
<form action="{{ url_for('members') }}" method="POST">
答案 0 :(得分:2)
回顾一下url_for
:它采用方法的名称,即“端点”,并不关心您为该端点分配的URL app.route
装饰器,这是url_for
的全部内容。
tutorial有几个使用url_for
的例子:
>>> from flask import Flask, url_for
>>> app = Flask(__name__)
>>> @app.route('/')
... def index(): pass
...
>>> @app.route('/login')
... def login(): pass
...
>>> @app.route('/user/<username>')
... def profile(username): pass
...
>>> with app.test_request_context():
... print url_for('index')
... print url_for('login')
... print url_for('login', next='/')
... print url_for('profile', username='John Doe')
...
/
/login
/login?next=/
/user/John%20Doe
它甚至说明了应该使用url_for
的原因(并且,通过扩展,它擅长做什么):
为什么要构建网址而不是将其硬编码到模板中?这有三个很好的理由:
反转通常比对网址进行硬编码更具描述性。更重要的是,它允许您一次性更改网址,而无需记住在整个地方更改网址 URL构建将为您透明地处理特殊字符和Unicode数据的转义,因此您无需处理它们 如果您的应用程序位于URL根目录之外(例如,在/ myapplication而不是/),url_for()将为您正确处理。
最重要的是,url_for
不依赖于使用app.route
构建的网址。
答案 1 :(得分:-1)
<form action="{{ url_for('members', buildingSlug='yourBuildingSlugValue') }}" method="POST">