我如何使用url_for开始使用slug?

时间:2015-06-26 02:22:58

标签: python flask

我在我的应用上有这条路线:

@app.route('/<buildingSlug>/members/', methods=("GET", "POST"))

我想在该路线上使用url_for,但我找不到方法

<form action="{{ url_for('members') }}" method="POST">

2 个答案:

答案 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">