flask学习笔记(三) --URL与视图函数映射
欢迎加入知了课堂,学习flask
Python Flask系列(1)——基础:http://study.163.com/course/courseMain.htm?courseId=1004091002
Python Flask框架——全栈开发: http://study.163.com/course/courseMain.htm?courseId=1004507006
客户端通过URL(统一资源定位符)访问服务器上的特定资源,今天介绍如何使用flask完成到视图函数映射这一环节。
一.基本用法
@app.route( '/' )
def hello_world():
return 'Hello World!'
首先要用到的就是修饰器 @app.route(' / '),它吧下面 hello_world()这个视图函数修饰成路由,括号里的参数规定请求的路径。这样用户就可以根据 '/' 这个路径,访问视图函数。比如:IP地址是 127.0.0.1 ,端口是 5000、使用http协议 浏览器输入 http://127.0.0.1:5000/就能访问到这个视图函数,服务器随后给浏览器返回一个字符串 'Hello World!'。一个视图函数可以指定多个URL路径,后面我再介绍配置方法。
二.将参数嵌套在路径里
@app.route(' xxx ') 路径参数可以写死,也可以是变化的。比如,app.route(' /index/ ') 这样你只能通过 http://127.0.0.1:5000/index/ 来访问下面的视图函数,index在这里只能算是一个字符串常量。如果路径的某一部分能够接受不同的数据,并把数据作为参数传入视图函数进处理,实现不同的返回。这样就能针对用户不同的输入展示不同的欢迎信息。听上去很不错,那么怎么实现呢?
@app.route( '/user/<name>' )
def index(name):
return '欢迎:{}'.format(name)
传递参数的语法是:`/<参数名>/`。然后在视图函数中,也要定义同名的参数。
要给参数指定数据类型,语法是 '/<类型名:参数名>/'。
1.如果没有指定具体的数据类型,那么默认就是使用`string`数据类型。
2. `int`数据类型只能传递`int`类型。
3. `float`数据类型只能传递`float`类型。
4. `path`数据类型和`string`有点类似,都是可以接收任意的字符串,但是`path`可以接收路径,也就是说可以包含斜杠。
5. `uuid`数据类型只能接收符合`uuid`的字符串。`uuid`是一个全宇宙都唯一的字符串,一般可以用来作为表的主键。
6.前面说过可以给一个视图函数指定多个url,是通过`any`数据类型,可以在一个`url`中指定多个路径。例如:
```python
@app.route('/<any(blog,article):url_path>/<id>/')
def detail(url_path,id):
if url_path == 'blog':
return '博客详情:%s' % id
else:
return '博客详情:%s' % id
```
三.另一种URL传参的方法
第一种:使用path的形式(将参数嵌入到路径中),就是上面讲的。第二种:使用查询字符串的方式,就是通过`?key=value`的形式传递的。比如, http://127.0.0.1:5000/index/?wd=value ,在视图函数这边对应的处理如下
@app.route('/index/')
def d():
wd = request.args.get('wd')
return '您通过查询字符串的方式传递的参数是:%s' % wd
使用request方法,要引入这个类
from flask import Flask,request
四.总结
如果你的这个页面的想要做`SEO`优化,就是被搜索引擎搜索到,
那么推荐使用第一种形式(path的形式)。如果不在乎搜索引擎优化,
那么就可以使用第二种(查询字符串的形式)。
欢迎加入知了课堂,学习flask
Python Flask系列(1)——基础:http://study.163.com/course/courseMain.htm?courseId=1004091002
Python Flask框架——全栈开发: http://study.163.com/course/courseMain.htm?courseId=1004507006
文章来源: blog.csdn.net,作者:hinzer,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/feit2417/article/details/79830171
- 点赞
- 收藏
- 关注作者
评论(0)