Django+中间件+登录验证

  Django的request请求需要首先经过中间件处理,再通过URL查找到对应的views函数进行处理。在settings的MIDDLEWARE_CLASSES中

添加设置中间件进行激活,大致原理如下图所示:

  

      在使用Django框架进行开发的过程中,遇到一个问题:要求对觉得多数页面请求request进行用户登录验证,如果用户没有登录则跳转回到登录页面;

如果用户登录了,则直接跳转到新的链接页面?

      在django中提供了一种自定义装饰器@login_required来实现验证用户登录:

复制代码
1 # coding: utf-8
2 from django.shortcuts import render
3 from django.contrib.auth.decorators import login_required
4 
5 @login_required
6 def home(request):
7     return render(request, 'home.html')
复制代码

    但是这种方式有一个不方便的地方:如果每添加一个功能需要验证登录,就需要添加@login_required来进行装饰。如果有大量的功能需要进行登录验证,

工作量会增大。或者如果因为需求变化,删除装饰器,这种工作量会比较麻烦。

    所以在学习过程中,想到使用django的中间件来进行登录验证,在settings中增加参数,排除不需要登录的url,如:

1
2
3
4
EXCLUDE_URL  =   (
      '/login/' ,
     '/logout' ,      
)

    然后再创建一个中间件模块,将此中间件添加到MIDDLEWARE_CLASSES中,定义process_request函数,对登录的url进行验证:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# coding: utf-8
from  djangoMiddleware.settings  import  EXCLUDE_URL
from  django.shortcuts  import  HttpResponseRedirect
import  re
 
exclued_path  =  [re. compile (item)  for  item  in  EXCLUDE_URL]
 
class  PubAuthMiddleWare( MiddlewareMixin):
     def  process_request( self , request):
         url_path  =  request.path
         for  each  in  exclued_path:
             if  re.match(each, url_path):
                 return
         if  request.user.is_authenticated:
             return  HttpResponseRedirect( '/logout' )
         else :
             return

     其中的exclude_path为不需要验证登录的url(白名单),直接return进入响应的views.fun进行处理。

    Django的中间件是很方便的,当需要对所有的request进行相同的处理时,可以使用中间件进行处理,很方便。

 

转载于:https://www.cnblogs.com/wdbgqq/p/9822535.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Django和Vue是两个流行的Web开发框架,Django是用Python编写的后端框架,Vue是用JavaScript编写的前端框架。 Django和Vue的源码包含了许多有用的组件和工具,可以帮助开发者创建高效、可靠和安全的Web应用程序。它们的源码都是开源的,意味着任何人都可以查看、修改和贡献改进代码。 Django的源码包括了许多模板、中间件和视图,这些都是用来协助开发者构建Web应用程序的基础组件。它还包括了许多与安全、表单处理和用户身份验证相关的功能,这些对于创建安全的Web应用程序至关重要。 Vue的源码包括了许多组件,如路由、状态管理和指令等,这些都是用来构建复杂的交互式Web应用程序的基础组件。它还提供了一些有用的开发工具,如调试器和测试工具,用于简化开发过程。 Django和Vue的源码可以相互结合使用,以创建全栈Web应用程序,其中Django作为后端,用来处理业务逻辑和数据持久化,Vue作为前端,用来呈现数据和实现交互。使用这种方法,开发者可以创建现代化、高效和灵活的Web应用程序,满足不同的商业需求。 ### 回答2: Django Vue源码指的是使用Django作为后端框架,Vue作为前端框架,结合开发的web应用程序的源代码。Django是一个高度灵活的Python框架,可以轻易地进行数据库、表单、用户身份验证等操作,Vue则是一个开源的JavaScript框架,用于开发单页面应用程序。 Django Vue源码的优点在于,它结合了Django和Vue的两种技术,使得开发人员可以轻松构建功能强大、易于维护的Web应用程序。借助Vue的庞大生态系统,开发人员可以选择一系列易于集成的开源组件,从而加快开发速度。通过使用Vue提供的UI库,可以快速创建出高度响应的界面,增强用户体验。 此外,Django Vue源码具有高度可配置性和可定制性。Django提供了诸如REST框架、ORM等功能,让开发人员可以按照自己的需求来构建API接口,Vue则提供了Vuex和Vue Router等组件,帮助人员实现更加复杂的Web应用程序功能。 总的来说,Django Vue源码是一种强大的技术组合,能够让开发人员更加便捷地开发高度可定制化的Web应用程序。 ### 回答3: Django Vue源码是一个结合了Django和Vue框架的开源项目,它的主要目的是实现快速构建现代化Web应用程序。该项目的源码可以在Github上找到。 Django Vue源码是基于Django REST框架和Vue.js构建的,它提供了一种方便的方法来构建Web应用程序,可以轻松地创建SPA(单页应用程序)或MPA(多页应用程序),并且同时提供了Django框架的可靠性和Vue框架的灵活性。 该项目的前端部分是基于Vuejs框架构建的,使得开发人员可以利用Vuejs框架的各种功能特性,如组件化、数据驱动、虚拟DOM等等,来开发丰富的用户界面。同时,后端采用Django REST框架,通过RESTful API的方式与前端进行交互。 通过Django Vue源码,开发人员可以快速搭建一个完整的Web应用程序,通过Vue.js构建前端用户交互界面,并且可以实现与后端API交互,完成数据的传输和操作。 值得一提的是,Django Vue源码还与Bootstrap框架结合使用,提供了丰富的UI组件库,使得开发界面更加快捷和美观。 总的来说,Django Vue源码是一个提供了高效、灵活、可靠的方案,用于快速搭建现代化Web应用程序的开源项目,值得开发人员深入学习和探索。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值