FBV和CBV装饰器
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装饰器的更多相关文章
- django基础 -- 4. 模板语言 过滤器 模板继承 FBV 和CBV 装饰器 组件
一.语法 两种特殊符号(语法): {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 二.变量 1. 可直接用 {{ 变量名 }} (可调用字符串, 数字 ,列表,字典,对象等) ...
- CBV和FBV用户认证装饰器
FBV装饰器用户验证 CBV装饰器用户验证 装饰器位置 或 或
- [Python自学] day-21 (2) (Cookie、FBV|CBV装饰器)
一.什么是Cookie 1.什么是Cookie? Cookie是保存在客户端浏览器中的文件,其中记录了服务器让浏览器记录的一些键值对(类似字典). 当Cookie中存在数据时,浏览器在访问网站时会读取 ...
- django CBV装饰器 自定义django中间件 csrf跨站请求伪造 auth认证模块
CBV加装饰器 第一种 @method_decorator(装饰器) 加在get上 第二种 @method_decorator(login_auth,name='get') 加在类上 第三种 @met ...
- Django基础七之CBV装饰器和中间件
Django基础七之CBV装饰器和中间件 目录 Django基础七之CBV装饰器和中间件 1. CBV加装饰器 2. Django中间件 2.1 Django中间件介绍 2.2 自定义中间件 2.2. ...
- [oldboy-django][2深入django]FBV + CBV + 装饰器
FBV django CBV & FBV - FBV function basic view a. urls 设置 urls(r'^test.html$', views.test) b. vi ...
- Django之Cookie Session详解,CBV,FBV登陆验证装饰器和自定义分页
Cookie Session和自定义分页 cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接 ...
- cookie,session 的概念以及在django中的用法,以及cbv装饰器用法
cookie的由来: 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后 ...
- cbv装饰器 中间件 跨站请求伪造
给cbv下面的函数加装饰器 写一个验证用户登录的程序 前端页面 # 写一个装饰器验证session def login_auth(func): def inner(request,*args,**kw ...
随机推荐
- 2019金融科技风往哪儿吹?蚂蚁金服联合20余家金融机构预测新年热点:5G、区块链上榜
2019年,金融科技的风向标在哪里?哪些板块成新宠,哪些科技成潮流? 1月4日,蚂蚁金服ATEC城市峰会在上海举行.大会上,蚂蚁金服与20余家金融机构一起预测了2019年金融科技的发展. “未来金融会 ...
- 你有可能不知道的css浮动问题
最近在开发过程中,有的时候会经常遇见明明知道需要这样做,但是为什么要这样做的原因我们却总是不明所以然. 先来解释下什么叫做清除浮动吧: 在非IE浏览器(如Firefox)下,当容器的高度为auto,且 ...
- [Linux]ubuntu安装基本流程
ubuntu安装基本流程 1.设置分辨率2.设置语言环境3.设置服务器镜像源4.添加终端5.apt.apt-get更新和升级系统软件 sudo apt update/upgrade sudo apt- ...
- 关于java类加载机制的一些理解
关于java的类加载机制加载顺序,这个东西可以说是基础的东西,不过很遗憾这方面很多人也都不是很在意,比如我自己,最近上班闲下来了,就开始看一些博客文章了,今天恰好被一篇博文给吸引了,并且他的示例题一开 ...
- getter unddfined
今天用vue.js写代码 报错: getter unddfined 错误原因:没有在main.js中注册store
- dedecmsV5.7织梦后台更新文章,发布时间不自动更新
问题:dedecmsV5.7后台修改文章的时候,会更新发布时间,需求是不自动更新时间,还是当时的发布时间 解决: 1.修改后台文件夹/templets/archives_edit.htm,articl ...
- servletsza
servlet本身不能独立运行,需要在一个web应用中运行,而web应用是部署在tomcat上的 所以一个servlet开发需要以下几个步骤: ①创建web应用项目 ②编写servlet代码 ③部署到 ...
- Jupyter Notebook 修改默认打开的文件夹的位置
初次使用Jupyter Notebook,确实好用啊!!,又好看又好用,不过还是遇到了一个问题,安装好之后,打开Jupyter Notebook 的时候,默认的文件夹的位置是C盘下面的XXX目录,但是 ...
- python 数据分析基础
安装Python基础的几个数据分析库: pip install pandas pip install numpy pip install scipy pip install scikit-surpri ...
- Sping AOP Capabilities and Goals
Spring AOP是用纯的java实现的.不需要任何个性的实现过程.Spring AOP不需要控制类加载器,并且它适用于Servlet容器或者应用服务器. Spring AOP当前只支持方法执行的连 ...