时间:2021-05-23
1、检测登录状态
base.py
def checkLogin(func): """ 查看session值用来判断用户是否已经登录 :param func: :return: """ def warpper(request,*args,**kwargs): if request.session.get('username', False): return func(request, *args, **kwargs) else: return HttpResponse('/login') return warpperindex.py:
from proApp import models, article, base@base.checkLogindef index(request): dict = { "article_list": article.getArticle(), } return render(request, 'index.html',dict)1报错:
The view proApp.base.warpper didn't return an HttpResponse object. It returned None instead.
解决办法: 判断用户session后,一定要return返回值
2、登录检查成功,路由未被更改,页面未跳转
解决办法: redirect(‘跳转路径和名称‘)方法,页面跳转
from django.shortcuts import render,render_to_response,redirectdef checkLogin(func): """ 查看session值用来判断用户是否已经登录 :param func: :return: """ def warpper(request,*args,**kwargs): if request.session.get('username', False): return func(request, *args, **kwargs) else: return redirect('/login') return warpper注意:render与redirect两点区别:
1、render返回一个登陆成功后的页面,刷新该页面将回复到跳转前页面。而redirect则不会
2、render返回一个登陆成功页面,不会经过url路由分发系统,也就是说,不会执行跳转后url的试图函数。这样,返回的页面渲染不成功;而redirect是跳转到指定页面,当登陆成功后,会在url路由系统进行匹配,如果有存在的映射函数,就会执行对应的映射函数。
补充知识:Django中的中间件与类视图
类视图
函数视图:以函数的方式定义的视图称为函数视图
类视图:以类的方式定义的视图称为类视图
代码可读性好
类视图相对于函数视图有更高的复用性
因此大部分视图都使用类进行封装。
from django.views import Viewclass ClassView(View): """类视图的介绍""" def get(self, request): """get请求方法""" print('get请求方法进次函数') return HttpResponse('get请求方法') def post(self, request): """post请求方法进此函数""" print('post请求方法') return HttpResponse('post请求方法') """ 在url中配置 """ urlpatterns = [ url(r"^classview/$", views.ClassView.as_view()) #ClassView是一个类 需要调用Django自带的as_view方法转换为view]中间件
中间件
Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性。
我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预。
#先在子应用文件下新建(自定义).py文件# 自定义中间键def outer(fuc): print('调用前') def inner(*args, **kwargs): print('执行前') data = fuc(*args, **kwargs) print(' 执行后') return data return inner#2. settings.py的middleware下面加入自定义的中间件'user1.middlewares.outer' # 自定义中间件以上这篇django 装饰器 检测登录状态操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文研究的主要是Python使用装饰器进行django开发的相关内容,具体如下。装饰器可以给一个函数,方法或类进行加工,添加额外的功能。在这篇中使用装饰器给页面
使用Django的时候,我发现一个很神奇的装饰器:@login_required,这是控制一个view的权限的,比如一个视图必须登录才可以访问,可以这样用:@l
Django在做后台系统过程中,我们通常都会为view函数添加@login_required装饰器,这个装饰器的主要作用就是在用户访问这个方法时,检查用户是否已
前言Django提供了多种装饰器,其中login_required可能是经常会使用到的。这里介绍下四种使用此装饰器的办法。当然,在使用前,记得在工程目录的set
用户认证组件: 功能:用session记录登录验证状态 前提:用户表:django自带的auth-userpython3manage.pycreatesup