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
的原因有两点:
- 将来如果修改了
URL
,但没有修改该URL
对应的函数名,就不用到处去替换URL
了。 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。
最新文章
- Java--静态区域块
- FIR.im Weekly - 这是多产的一周
- java 标识符命名规则
- ————————————————————————————杭电ACM————————————————X-POWER————————————————————————————————
- makefile基础实例讲解 分类: C/C++ 2015-03-16 10:11 66人阅读 评论(0) 收藏
- c语言的笔记
- storm单机版安装配置
- java:利用静态字段和构造函数实现已建对象数查询
- 执行yum提示错误:rpmdb: BDB0113 Thread/process 424227/139826856310848 failed
- 怎样解决Myeclipse内存溢出?
- logging日志模块的使用
- Js_获取浏览器等高宽
- model number
- myeclipse环境优化
- JavaScript:正则表达式 全局
- IE源代码摘抄,基于泄漏的IE5.0(持续更新)
- python环境杂谈
- web弹出对话框
- fzu_oop_east 第二次作业
- Appium+python自动化21-DesiredCapabilities详解
热门文章
- js 概述 ( 一 )
- JavaScript(js)概述
- sem_open 信号量操作
- spring实例化二:SimpleInstantiationStrategy
- CSS3媒体查询实例
- Vuex的mapGetters方法使用报错
- 为什么size_t重要?(Why size_t matters)
- Educational Codeforces Round 74 (Rated for Div. 2) C. Standard Free2play
- Codeforces Round #585 (Div. 2) D. Ticket Game
- Shell 脚本来自动监控 Linux 系统的内存