美文网首页
Flask中的url_for()怎么用?

Flask中的url_for()怎么用?

作者: 爱喝马黛茶的安东尼 | 来源:发表于2019-10-26 17:29 被阅读0次

    在Flask开发中常会url_for()函数,这个url_for()函数是用于构建指定函数的URL,而且url_for操作对象是函数,而不是route里的路径。

    如果route和函数名不一样而导致使用url_for()错误,千万不要去route找错误。 

    例如下面的代码:

    from flask import Flask, url_for

    app = Flask(\__name__)

    @app.route('/')

    def index():

        pass

    @app.route('/login')

    def LOGIN():

        pass

    with app.test_request_context():

        print(url_for('index'))

        print(url_for('login'))

    print(url_for('index'))没有报错,就是一个反斜杠;print(url_for('login'))报错,抛出BuildError异常:

    Traceback (most recent call last): 

    File “<\pyshell#12>”, line 3, in 

    print(url_for(‘login’)) 

    File “C:\Python35\lib\site-packages\flask\helpers.py”, line 332, in url_for 

    returnappctx.app.handle_url_build_error(error, endpoint, values) 

    File “C:\Python35\lib\site-packages\flask\app.py”, line 1811, in handle_url_build_error 

    reraise(exc_type, exc_value, tb) 

    File “C:\Python35\lib\site-packages\flask_compat.py”, line 33, in reraise 

    raise value 

    File “C:\Python35\lib\site-packages\flask\helpers.py”, line 322, in url_for 

    force_external=external) 

    File “C:\Python35\lib\site-packages\werkzeug\routing.py”, line 1758, in build 

    raise BuildError(endpoint, values, method, self) 

    werkzeug.routing.BuildError: Could not build url forendpoint ‘login’. Did you mean ‘index’ instead?

    把login修改为LOGIN:

    with app.test_request_context():

        print(url_for('index'))

        print(url_for('LOGIN'))

    打印正常:

    /login

    参数

    url_for()也可以附带一些参数,比如想要完整的URL,可以设置_external为Ture:

    url_for('.static',_external=True,filename='pic/test.png')

    这样返回的url是http://localhost/static/pic/test.png

    参数示例:

    endpoint

    URL的端点(即函数的名字)

    values 

    URL的变量参数

    _external 

    如果设置为True,则生成一个绝对路径URL

    _scheme 

    一个字符串指定所需的URL方案。_external参数必须设置为True,不然会抛出ValueError。

    _anchor 

    如果设置了这个则给URL添加一个mao

    _method 

    如果设置这个则显示地调用这个HTTP方法

    本文转自:https://www.py.cn/kuangjia/flask/10421.html

    相关文章

      网友评论

          本文标题:Flask中的url_for()怎么用?

          本文链接:https://www.haomeiwen.com/subject/kmkuvctx.html