您当前的位置: 首页 >  flask

IT之一小佬

暂无认证

  • 3浏览

    0关注

    1192博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Flask框架中url_for用法详解

IT之一小佬 发布时间:2022-08-13 23:23:40 ,浏览量:3

        一般情况下通过一个URL就可以执行到某一个函数。如果反过来,知道一个函数,怎么去获得这个URL呢?url_for函数就可以实现这个功能。url_for()函数接收两个及以上的参数,他接收函数名作为第一个参数,接收对应URL规则的命名参数,如果还出现其他的参数,则会添加到URL的后面作为查询参数。

使用url_for的原因有两点:

  • 将来如果修改了URL,但没有修改该URL对应的函数名,就不用到处去替换URL了。
  • url_for()函数会转义一些特殊字符和unicode字符串,这些事情url_for会自动的帮我们搞定。

示例代码1:

from flask import Flask, url_for

app = Flask(__name__)

app.config['JSON_AS_ASCII'] = False


@app.route('/')
def hello_world():
    return url_for('article', id=1)


@app.route('/article/')
def article(id):
    return f'id {id} article detail'


if __name__ == '__main__':
    app.run()

运行结果:

示例代码2:

from flask import Flask, jsonify, url_for

app = Flask(__name__)

app.config['JSON_AS_ASCII'] = False

books = [
    {"id": 1, "name": '三国演义'},
    {"id": 2, "name": '水浒传'},
    {"id": 3, "name": '西游记'},
    {"id": 4, "name": '红楼梦'},
]


@app.route('/')
def hello_world():
    return 'hello world'


@app.route('/books/list')
def book_list():
    for book in books:
        book['url'] = url_for("book_detail", book_id=book['id'])

    # return books  # 直接返回books会报错的,类型格式不支持
    return jsonify(books)


@app.route('/book/details/')
def book_detail(book_id):
    for book in books:
        if book_id == book['id']:
            return book
    return f"id:{book_id}的图书不存在!"


if __name__ == '__main__':
    app.run()

运行结果:

关注
打赏
1665675218
查看更多评论
立即登录/注册

微信扫码登录

0.0956s