zoukankan      html  css  js  c++  java
  • python flask url参数

    python flask url参数

    常见 url 传参中都是 xxx?xxx=xxx

    问题来了 flask中我没有找到 关于xx? 问号的使用方式

    是不是flask就不支持这种方式

    如果有 route配置的时候该如何写?

    ?后面的部分不参与url匹配,route时不必考虑。

    url_for是可以干这个事情的

    路由定义:

    @app.route('/')
    @app.route('/page/<int:page>/')
    def index(page=1):
        pass

    演示:

    In [6]: url_for('index', page=3, a=2, b=3)
    Out[6]: '/page/3/?a=2&b=3'

    ?后面是参数

    可以通过request.args.get访问

    from flask import Flask, request
    app = Flask(__name__)
    
    @app.route('/')
    def hello():
        text = request.args.get('text')
        return 'hello %s' text

    通过 /?text=world 访问 即可打出 hello world

    构造URL(url_for):

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

    通过构建URL的方式而选择直接在代码中拼URL的原因有两点:

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

    from flask import Flask,url_for
    app = Flask(__name__)
    @app.route('/')
    def hello_world():
        #将my_list函数名以字符串方式传到url_for里面
        print(url_for('my_list'))
        return 'Hello World!'
    @app.route('/list/')
    def my_list():
        return 'my_list'
    if __name__ == '__main__':
        app.run()

     运行,访问浏览器查看结果

    在控制台打印出了如下结果:

    在url_for添加参数,会自动添加到url后面

     以后不管你原来的url如何修改,我都能通过url_for返回你修改过的正确url

    # url_for笔记:

    ### `url_for`的基本使用:
    `url_for`第一个参数,应该是视图函数的名字的字符串。后面的参数就是传递给`url`。
    如果传递的参数之前在`url`中已经定义了,那么这个参数就会被当成`path`的形式给
    `url`。如果这个参数之前没有在`url`中定义,那么将变成查询字符串的形式放到`url`中。
    ```python
    @app.route('/post/list/<page>/')
    def my_list(page):
    return 'my list'

    print(url_for('my_list',page=1,count=2))
    # 构建出来的url:/my_list/1/?count=2
    ```

    ### 为什么需要`url_for`:
    1. 将来如果修改了`URL`,但没有修改该URL对应的函数名,就不用到处去替换URL了。
    2. `url_for`会自动的处理那些特殊的字符,不需要手动去处理。
    ```python
    url = url_for('login',next='/')
    # 会自动的将/编码,不需要手动去处理。
    # url=/login/?next=%2F
    ```

    ### 强烈建议以后在使用url的时候,使用`url_for`来反转url。

  • 相关阅读:
    sizeof注意
    如何获取存储过程的返回值和输出值
    OA、ERP、SRM、PLM、CAPP、MES、LIMS、CRM
    js1号脚本
    Python各类常用库整理
    Html设计器
    python从入门到放弃之图像处理
    C# Web API操作Sqlite数据库
    C# Naudio 从麦克风输入到声卡输出 录音 放音功能
    WPF/MVVM模式入门教程(二):实现INotifyPropertyChanged接口
  • 原文地址:https://www.cnblogs.com/leijiangtao/p/11757226.html
Copyright © 2011-2022 走看看