使用url_for()在Flask中创建动态URL

时间:2011-09-19 23:11:03

标签: python flask

我的Flask路线中有一半需要变量,/<variable>/add/<variable>/remove。如何创建指向这些位置的链接?

url_for()为路由到的函数接受一个参数但是我不能添加参数?

5 个答案:

答案 0 :(得分:208)

它采用变量的关键字参数:

url_for('add', variable=foo)

答案 1 :(得分:74)

Flask中的

url_for用于创建URL,以防止在整个应用程序(包括模板)中更改URL的开销。如果没有url_for,如果您的应用的根网址发生了变化,那么您必须在链接所在的每个网页中进行更改。

语法:url_for('name of the function of the route','parameters (if required)')

可以用作:

@app.route('/index')
@app.route('/')
def index():
    return 'you are in the index page'

现在,如果您有索引页面的链接:您可以使用:

<a href={{ url_for('index') }}>Index</a>

你可以用它做很多事情,例如:

@app.route('/questions/<int:question_id>'):    #int has been used as a filter that only integer will be passed in the url otherwise it will give a 404 error
def find_question(question_id):  
    return ('you asked for question{0}'.format(question_id))

对于上述内容,我们可以使用:

<a href = {{ url_for('find_question' ,question_id=1) }}>Question 1</a>

像这样你只需传递参数!

答案 2 :(得分:30)

请参阅the Flask API document for flask.url_for()

将js或css链接到模板的其他示例片段如下所示。

<script src="{{ url_for('static', filename='jquery.min.js') }}"></script>

<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">

答案 3 :(得分:5)

模板:

传递函数名称和参数。

<a href="{{ url_for('get_blog_post',id = blog.id)}}">{{blog.title}}</a>

视图,功能

@app.route('/blog/post/<string:id>',methods=['GET'])
def get_blog_post(id):
    return id

答案 4 :(得分:0)

您需要添加函数意味着您要呈现该函数的页面应该添加到 url_for(function name) 中。 它将重定向到该函数,页面将相应地呈现。