python url参数_python flask url参数

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

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

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

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

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

url_for是可以干这个事情的

路由定义:

@app.route('/')

@app.route('/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 importFlask, request

app= Flask(__name__)

@app.route('/')defhello():

text= request.args.get('text')return 'hello %s' text

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

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

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

将来如果修改了URL,但没有修改该URL对应的函数名,就不用到处去替换URL了。

url_for()函数会转义一些特殊字符和unicode字符串,这些事情url_for会自动的帮我们搞定。

from flask importFlask,url_for

app= Flask(__name__)

@app.route('/')defhello_world():#将my_list函数名以字符串方式传到url_for里面

print(url_for('my_list'))return 'Hello World!'@app.route('/list/')defmy_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//')

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值