学习目标
URL与视图
1、URL与函数的映射 2、构造URL 3、指定URL末尾的斜杠
4、指定HTTP方法 5、页面跳转和重定向
关于响应
一、URL与函数的映射
@装饰函数,路由就是url(统一资源定位符),路由映射到函数上,调用路由就是调用函数的运行结果
- 不携带参数
/list/ - 不携带参数且以/作为结尾
/list/若用户没有添加结尾/,浏览器会自动添加 - 携带参数
/list/<sid> - 给参数加上指定类型的限制 ,如
/list/<int:sid> - path可以携带/的参数,如
/list/<path:sid>' - any类型 指定多种类型
# 视图函数
@app.route('/')
def hello_python():
return 'hello python'
@app.route('/list/<sid>')
def article(sid):
return '这是第{}篇文章'.format(sid)
# 给参数加上指定类型的限制
# 1、int类型或float类型
@app.route('/list/<int:sid>')
def article(sid):
return '这是第{}篇文章'.format(sid)
# 2、string类型中 / 是作为参数的分隔符 ,不能接收/的字符串
@app.route('/list/<string:sid>')
def article(sid):
return '这是第{}篇文章'.format(sid)
# 注意:若是自己在末尾有写到/,那么以/作为严格的结尾,那么网页中若自己没写,可以自动补全
@app.route('/list/<int:sid>/')
def article(sid):
return '这是第{}篇文章'.format(sid)
# 3、path可以接收/的字符串
@app.route('/list/<path:sid>')
def article(sid):
return '这是第{}篇文章'.format(sid)
# http://127.0.0.1:5000/list/99/
# 这是第99/篇文章
# 4、any类型 可以指定多种路径
@app.route('/<any(dict,tuple):url_path>/')
def item(url_path):
return url_path
@app.route('/ie')
def baidu():
return request.args.get('name')
# url:输入 http://127.0.0.1:5000/ie?name=python
# 网页:输出 python
二、构造URL
from flask import Flask,url_for
# 创建app的实例
app = Flask(__name__)
@app.route('/')
def hello_world():
# /article/1?page=1&name=1
print(url_for('article',aid=1,page=1,name=1,age=18))
# /article/1?page=1&name=1&age=18
return 'hello girl'
# 尖括号是固定写法,默认数据类型是字符串 传参
@app.route('/article/<aid>')
def article(aid):
return 'article {}'.format(aid)
三、指定URL末尾的斜杠
# 指定URL末尾的斜杠 与 末尾没有斜杠的url是两个路由
# 若用户没有输入末尾的/ ,浏览器会自动补全
@app.route('/article2/<aid>/')
def article2(aid):
return 'article2 {}'.format(aid)
四、指定HTTP方法
4、指定HTTP方法(可以用postman查看)
默认路由为get请求 使用methods=[‘GET’,‘POST’]进行更改
from flask import Flask,request
# 创建app的实例
app = Flask(__name__)
@app.route('/',methods=['GET','POST'])
def hello_world():
# 无论是post请求,还是get请求,均使用args
# print(request.args.get('name'))
# print(request.form.get('name'))
return 'hello meimei'
@app.route('/article/<aid>')
def article(aid):
return 'article {}'.format(aid)
# get请求,拼接在url上
# post请求,参数在form表单中
# 还有很多其它的请求

五、网页跳转和重定向
重定向:访问一个网页时,跳转到另一个网页
永久重定向:301 在url_for(‘函数名’,code=301) 中将默认的临时302改为301变成永久重定向即可。
临时重定向:302
重定向演示
from flask import Flask,request,redirect,url_for
# 创建app的实例
app = Flask(__name__)
@app.route('/')
def index():
return '欢迎来到XX首页'
@app.route('/login')
def login():
return 'login'
# 重定向 如果没有找到,就返回指定redirect的路径的虾
@app.route('/profile/')
def profile():
name = request.args.get('name')
if name:
return name
else:
# return redirect('/') # 相当于硬编码,若重定向的url改变了,这边会出错,因此采用url_for
return redirect(url_for('login')) # 写入要重定向的url所对应的函数的名称
# 默认重定向是302临时重定向,code=301,改为永远重定向
# return redirect(url_for('login'),code=301)
# 如果url上拼接成功name值,则返回姓名
# http://127.0.0.1:8888/profile/?name=asa
# 打印:asa
if __name__ == '__main__':
app.run(debug=True,port=8888)
若是url 上拼接上name的值


临时重定向

永久重定向

用途
登录–临时重定向
网页域名大改时-永久重定向
六、关于响应
return返回就是一个响应
# @Time:2021/12/21 17:54
from flask import Flask,request,redirect,url_for,Response,make_response # 导入返回的包Response或者make_response
'''
return返回就是一个响应
返回值可以是 : 字符串、模板、字典、元组
'''
# 创建app的实例
app = Flask(__name__)
@app.route('/')
def index():
# return {"name":'python'}
# return {"name":'小花花'} # 中文会乱码
# return 'asasa你好啊 '
# return ('name','python') # 只会显示第一个数据
# return 'python',400 # 只要有一个, 就是元组
# 继承的是flask的Response基类 返回的文件的格式mimetype为text/html
# return Response('python',status=200,mimetype='text/html')
return make_response('友情提示')
本文详细介绍了Flask框架中URL与视图的映射,包括不带参数、带参数的URL映射,指定URL末尾斜杠,以及如何限定HTTP方法。此外,还讲解了网页跳转和重定向的使用,包括临时重定向302和永久重定向301的实现,以及它们在登录和网站域名变更场景中的应用。
908

被折叠的 条评论
为什么被折叠?



