2、Flask实战第2天:URL传参
当我们访问网站/的时候,会执行hell_world函数,并把这个函数的返回值返回给浏览器,这样浏览器就显示hello world了
@app.route('/') def hello_world(): return 'Hello World!'
按照这种映射关系,我们可以再写一个,比如文章列表
@app.route('/article_list/') def article_list(): return 'Article list'
这样,我们访问127.0.0.1:5000/article_list/的时候,浏览器就会显示Article list
那么我们要如何给url传参呢?
比如我们来写个文章详情页
@app.route('/article/<article_id>/') #我们在<>里面写参数名article_id def article_detail(article_id): #这里的参数名要和上面的一致,即article_id return '您请求的文章是:{}'.format(article_id)
访问http://127.0.0.1:5000/article/1/
限定参数数据类型
可以对参数限定数据类型,比如上面的文章详情,限定article_id必须为整数型
@app.route('/article/<int:article_id>/') def article_detail(article_id): return '您请求的文章是:{}'.format(article_id)
这样当我们传递的参数是int类型的时候才能正常访问,其他类型都会返回404
类型可以设置提下几种:
string: 默认的数据类型,接收没有任何斜杠"\ /"的文本
int: 整数形
float: 浮点型
path: 和string类似,但是接受斜杠
uuid: 只接受uuid字符串
any: 可以指定多种路径,比如以下例子
@app.route('/<any(article,blog):url_path>/<id>/') def item(url_path, id): if url_path == 'article': return '文章详情:{}'.format(id) else: return '博客详情:{}'.format(id)
?key=value形式传参
上面我们接受参数使用的是path形式,下面我们来使用查询字符串的形式,即?key=value
如果有多个参数,则用&来拼接: ?key1=value1&key2=value2
from flask import Flask, request ... @app.route('/d/') def d(): wd = request.args.get('wd') return '您传递的参数是: {}'.format(wd)
如果你的页面想做SEO优化,就是被搜索引擎搜索到,那么推荐使用path形式
如果无所谓,可以使用查询字符串方式
提醒
在定义url的时候,一定记得在最后加一个斜杠,
1、如果不加斜杠,那么在浏览器中访问这个url的时候最后加了斜杠,那么就访问不到了,用户体验不好
2、搜索引擎会将不加斜杠的和加斜杠的视为不同的url,而实际上是同一个,那么会给浏览器造成一个误解,加了斜杠就不会出现斜杠的问题
每天进步一点,加油!