FBV装饰器:

def cook(request):

    err_msg=""
if request.method == "GET":
return render(request,'cookie.html') if request.method == "POST": username = request.POST.get('username')
p = request.POST.get('password') dic = user_info.get(username)
print(dic) if not dic:
err_msg="用户不存在"
return render(request,'cookie.html',{'err_msg':err_msg}) if dic['pwd'] == int(p): res = redirect('/xiaoqing/cookie1')
# res.set_cookie('username_cookie',username) #设置cookie 关闭浏览器失效
# res.set_cookie('username_cookie',username,max_age=10) 设置cookie失效时间 10秒过期
import datetime
current_date=datetime.datetime.utcnow()
change_date=current_date+datetime.timedelta(seconds=5)
res.set_cookie('username_cookie',username,expires=change_date) #到哪个时间失效 # res.set_signed_cookie('username_cookie',username,salt='sdasdas') return res
else:
return render(request,'cookie.html')

cook函数set cookie

def auth(func):  #装饰器 cookie认证

    def inner(request,*args,**kwargs):
v = request.COOKIES.get('username_cookie')
print(v)
if not v:
return redirect('/xiaoqing/cookie') return func(request,*args,**kwargs) return inner @auth
def cook1(request):
#获取当前已经登录的用户 v=request.COOKIES.get('username_cookie') #获取cookie
# 或者 v=request.COOKIES['username_cookie'] #获取cookie # v=request.get_signed_cookie('username_cookie',salt='sdasdas') #获取加密cookie return render(request,'cookie1.html',{'current_user':v,})

CBV装饰器

def auth(func): #装饰器

    def inner(request,*args,**kwargs):
v = request.COOKIES.get('username_cookie')
print(v)
if not v:
return redirect('/xiaoqing/cookie') return func(request,*args,**kwargs) return inner from django import views from django.utils.decorators import method_decorator #导入方法 @method_decorator(auth,name='dispatch') #类中全部方法做认证
class Order(views.View): # @method_decorator(auth) #单独方法做认证
def get(self,request):
v=request.COOKIES.get('username_cookie') return render(request,'cookie1.html',{'current_user':v,}) def post(self,request):
pass

FBV和CBV装饰器的更多相关文章

  1. django基础 -- 4. 模板语言 过滤器 模板继承 FBV 和CBV 装饰器 组件

    一.语法 两种特殊符号(语法): {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 二.变量 1. 可直接用  {{ 变量名 }} (可调用字符串, 数字 ,列表,字典,对象等) ...

  2. CBV和FBV用户认证装饰器

    FBV装饰器用户验证 CBV装饰器用户验证 装饰器位置 或 或

  3. [Python自学] day-21 (2) (Cookie、FBV|CBV装饰器)

    一.什么是Cookie 1.什么是Cookie? Cookie是保存在客户端浏览器中的文件,其中记录了服务器让浏览器记录的一些键值对(类似字典). 当Cookie中存在数据时,浏览器在访问网站时会读取 ...

  4. django CBV装饰器 自定义django中间件 csrf跨站请求伪造 auth认证模块

    CBV加装饰器 第一种 @method_decorator(装饰器) 加在get上 第二种 @method_decorator(login_auth,name='get') 加在类上 第三种 @met ...

  5. Django基础七之CBV装饰器和中间件

    Django基础七之CBV装饰器和中间件 目录 Django基础七之CBV装饰器和中间件 1. CBV加装饰器 2. Django中间件 2.1 Django中间件介绍 2.2 自定义中间件 2.2. ...

  6. [oldboy-django][2深入django]FBV + CBV + 装饰器

    FBV django CBV & FBV - FBV function basic view a. urls 设置 urls(r'^test.html$', views.test) b. vi ...

  7. Django之Cookie Session详解,CBV,FBV登陆验证装饰器和自定义分页

    Cookie Session和自定义分页   cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接 ...

  8. cookie,session 的概念以及在django中的用法,以及cbv装饰器用法

    cookie的由来: 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后 ...

  9. cbv装饰器 中间件 跨站请求伪造

    给cbv下面的函数加装饰器 写一个验证用户登录的程序 前端页面 # 写一个装饰器验证session def login_auth(func): def inner(request,*args,**kw ...

随机推荐

  1. R语言并行运算示例 parallel 包

    library(parallel)#example 1cl <- makeCluster(getOption("cl.cores", 2))clusterApply(cl, ...

  2. windows平台 python生成 pyd文件

    Python的文件类型介绍: .py       python的源代码文件 .pyc     Python源代码import后,编译生成的字节码 .pyo     Python源代码编译优化生成的字节 ...

  3. 《Professional JavaScript for Web Developers》day02

    <Professional JavaScript for Web Developers>day02 1.在HTML中使用JavaScript 1.1 <script>元素 HT ...

  4. tomcat 中项目配置文件统一目录设置

    在tomcat 安装目录中 conf 下的  catalina.properties 文件中 有个  shared.loader= 配置为   shared.loader="${catali ...

  5. Flex4之皮肤定制

    Flex4之皮肤定制[Skin类和Skin类]          博客分类: RIA-Flex4专栏 FlexAdobeUPFlashUI 第一.关于spark.skin.SparkSkin类的 1. ...

  6. Django web框架-----Django templates模板

    说明:mytestsite是django框架下的项目,quicktool是mytestsite项目中的应用 一般的变量之类的用 {{ }}(变量),功能类的比如循环.条件判断是用 {% %}(标签) ...

  7. .NET controller传给view的bool类型

    问题: 在view中访问该变量是False,不是字符串,也不是bool类型的false. 解决方法: controller: ViewBag.Test = false; view中得到false值: ...

  8. vue v-if控制显隐,页面加载出现闪现 v-cloak

    <div id="divApp"> <div v-if="type === 'A'" v-cloak> A </div> & ...

  9. Android 音视频深入 二十一 FFmpeg视频剪切

    视频剪切我意外的发现上一次的视频压缩的代码能够运行FFmpeg视频剪切的命令,但是不能做视频合并的命令,因为不能读取记录了几个视频的路径的txt文件. 这里我就说直说视频剪切的过程,不说代码,只说lo ...

  10. Oracle入门知识

    在客户端里PL/sql里面 记得用commint 回滚 所写得SQL语句才真的有效  如插入7千万个数据 没有执行commint 就等于没有 将数据真正的存入数据库服务器里面去 所以当其他前端链接上 ...