This theme is built with awescnb.|

路由系统,请求,响应

路由系统

1.1路由经典写法

@app.route('/index',methods=['GET'],endpoint='index')
def index():
    return 'hello'

'''
	methods:能接受的请求方式
	endpoint:路由的别名
'''

1.2默认转换器

'default':          UnicodeConverter,
'string':           UnicodeConverter,
'any':              AnyConverter,
'path':             PathConverter,
'int':              IntegerConverter,
'float':            FloatConverter,
'uuid':             UUIDConverter,   

1.3本质

# 源码分析
'''
#1 装饰器   @route  python特殊语法糖,会把下面的函数当参数传入  order=route(order)  以后调用order本质就是在执行route(order)()                                                                                        
#2 route的内层函数---->本质是self.add_url_rule(rule, endpoint, f, **options)
def decorator(f):
    endpoint = options.pop("endpoint", None)
    self.add_url_rule(rule, endpoint, f, **options)
    return f

#3 self是app对象,add_url_rule 其实就Flask类的add_url_rule方法

#4 所以我们可以不使用装饰器来注册路由,而自己写
app.add_url_rule('/order/<string:pk>',view_func=order)
app.add_url_rule('/index',view_func=index)
'''

1.4cbv源码

'''
#1 cbv写法,继承MethodView,跟django一样

#2 as_view中的name是别名,在fbv中,endpoint是别名,在cbv中name最终会变成endpoint
app.add_url_rule方法中:	
    if endpoint is None:
        endpoint = _endpoint_from_view_func(view_func)  # type: ignore
        options["endpoint"] = endpoint
     view_func就是我们传入的视图函数
     
#3 app.add_url_rule('/index', view_func=index),路由有个别名,如果不写endpoint,会以函数名作为endpoint
# 如果是cbv,as_view(name='home') name就是路径的别名,endpoint name是必填参数,不传入会报错

#4 cbv加装饰器  在类中写一个类属性decorators: t.List[t.Callable] = []; decorators是一个列表类型。
   第一个位置的会放在最下层,多个装饰器执行顺序是从【上往下执行】
   
#5 cbv只允许某个请求方式或者几个请求方式   methods=['POST','GET','DELETE']
'''

1.5add_url_rule方法参数

### 参数
	-rule:请求的路径,可以使用转换器
    -endpoint:别名-->反向解析
    -view_func:视图类.as_view(name='xx')(视图函数内存地址)
    -methods:允许的请求方式
    # ---------以下不重要-----
    -defaults:字典,给视图函数传默认值
    -strict_slashes:对URL最后的 / 符号是否严格要求
    -redirect_to   # 308重定向

请求

from flask import request

request.method  请求方式
request.args    get请求参数
request.form    post请求参数
request.values	get,post提交的数据总和

request.cookie	cookie
request.headers	请求头

request.path	路径
request.full_path全路径
request.url		带服务器地址的全路径 
request.base_url 不带地址的全路径
request.url_root 域名+端口
request.host_url 域名+端口
request.host	 不带http的域名+端口

响应

1.向浏览器中写入cookie,都可以使用make_response包裹一下变成响应对象
from flask import make_response
res = make_response(render_tamplate('home.html'))
res.set_cookie('name','春游去动物园')
return res


2.向浏览器中写响应头
from flask import make_response
res = make_response(render_tamplate('home.html'))
res.headers['USER_AGENT'] = 'values'
return res

本文作者:春游去动物园

本文链接:https://www.cnblogs.com/chunyouqudongwuyuan/p/16563528.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   春游去动物园  阅读(36)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开
  1. 1 生分 川青
生分 - 川青
00:00 / 00:00
An audio error has occurred.

生分 - 川青

词:莎子

曲:邵翼天

编曲:林亦

混音:罗杨轩

吉他:林亦

制作人:谢宇伦

监制:曾炜超/陈显

策划:+7

统筹:黄染染

出品:漫吞吞文化

『酷狗音乐人 • 星曜计划』

全方位推广,见证星力量!

「版权所有未经许可 不得商业翻唱或使用」

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡

有些话一开口会伤人

有些话一开口会伤人

所以我选择默不作声

所以我选择默不作声

爱一个人

若甘愿陪衬

甘愿牺牲

也许换个名分

也不是没可能

我不怕在爱里做个蠢人

我不怕在爱里做个蠢人

也不怕爱过之后再分

也不怕爱过之后再分

爱一个人

有万种身份

万种可能

只是没想到

我们最后友人相称

我们怎么变得那么生分

我们怎么变得那么生分

连说话都要掌握好分寸

怕不注意流言

见缝插针

怕不小心我们

成陌生人

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡

有些话一开口会伤人

有些话一开口会伤人

所以我选择默不作声

所以我选择默不作声

爱一个人

若甘愿陪衬

甘愿牺牲

也许换个名分

也不是没可能

我不怕在爱里做个蠢人

我不怕在爱里做个蠢人

也不怕爱过之后再分

也不怕爱过之后再分

爱一个人

有万种身份

万种可能

只是没想到我们最后

友人相称

我们怎么变得那么生分

连说话都要掌握好分寸

怕不注意流言见缝插针

怕不小心我们成陌生人

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡

我们怎么变得那么生分

我们怎么变得那么生分

连说话都要掌握好分寸

怕不注意流言见缝插针

怕不小心我们成陌生人

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡