django 自定义中间件 完成用户登录(类似java面向切面)

pycharm mysql账号_Django+pycharm+mysql 实现用户登录/注册(Django五) 首先是让Django项目与mysql数据库初步建立连接具体做法见:pycharm连接mysql(注意其中第二步MySQL驱动最好安装最新版的)这里讲一下我在做这一步遇到的问题。一般Driver 那里的com.mysql.cj.jdbc.Driver是会自动显示的,但我一开始不显示因为我的mysql-connector-java-8.0.19文件夹如下,重复了,(这个是我拿下载到的zip选择解压文件... 阅读详情

写这个项目的时候开始没有考虑用户权限,后来想到以前JAVA Struts2有用到中间件进行拦截过滤,研究django也可以实现,这里简单做了个登陆功能,普通权限只可以查询,修改、删除等必须登陆才能操作

1. 首先自定义中间件类,重点是继承MiddlewareMixin

2. 在settings.py 中加入自定义的中间件,可以自定义权限功能

中间件代码如下,可以自己定义session中是否存在登陆,如果已经登陆,则可以进行编辑,否则禁止进行add/del/edit等操作并跳转到登陆页面

from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import HttpResponse,redirect

#自定义中间件进行user登陆拦截
class Row1(MiddlewareMixin):
    def process_request(self,request):
        if "add" in request.path or "del" in request.path or "edit" in request.path:
            print("用了管理员操作,开始进行验证")
            if request.session.get("is_login"):
                print(123)
                pass
            else:
                print(456)
                return redirect("/login/")
        else:
            print("不用用户验证,直接返回")

    def process_response(self,request,response):
        print("中间件1返回")
        return response

settings.py加入自定义的中间件,具体到类

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'app1.middle.m1.Row1'  #自定义中间件
]

登陆session保存代码,我是放在views.py里边,也可以自己定义:

def login(request):
    if request.method=="GET":
        return render(request,"login.html")
    else:
        username=request.POST.get("username",None)
        pwd = request.POST.get("pwd",None)
        print(username,pwd)
        if username=="raylu" and pwd == "raylu123":
            request.session["is_login"] = True
            request.session["username"] = "raylu"
            request.session["password"] = "123"
            request.session.set_expiry(0)  # 浏览器关闭则session失效
            return redirect("/visitChart.html/")
        elif username=="cherry" and pwd =="cherry123":
            request.session["is_login"] = True
            request.session["username"] = "cherry"
            request.session["password"] = "cherry123"
            request.session.set_expiry(0) #浏览器关闭则session失效
            return redirect("/visitChart.html/")
        else:
            return HttpResponse("用户名或密码错误!请联系QS管理员CherryLiu")

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <form action="/login/" method="post">
        {% csrf_token %}
        <p>username:<input type="text" name="username"></p>
        <p>password:<input type="password" name="pwd"></p>
        <p><input type="submit" value="登陆"></p>
    </form>

</body>
</html>

 

Django用户登录和注销(一) 基于函数和标准前端 1、写好views.py函数 django.contri.auth 内置authenticate, login ,logout。 authenticate能验证用户信息是否正确,成功返回该用户,否则返回None login,logout分别用于登录和注销 from django.shortcuts import render, redirect from djang... 阅读详情

相关推荐

Django中间件

AOP(Aspect Oriented Programming ),面向切面编程,是对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。可以实现在不修改源代码的情况下给程序动态统一添加功能的一种技术面向切面编程,就是将交叉业务逻辑封装成切面,利用AOP的功能将切面植入到主业务逻辑中。所谓交叉业务逻辑是指,通用的,与主业务逻辑无关的代码,如安全检查,事务,日志等。若不使用AOP,则会出现代码纠缠,即交叉业务逻辑与主业务逻辑混合在一起。

Calor13的博客 436

在Django中使用AOP中间件

何为AOP? AOP,面向切面编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等 。 AOP是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段 何为中间件? 中间件就是在目标和结果之间进行的额外处理过程,在Django中就是requ

weixin_47017011的博客 676

JavaEE JDK动态代理实现AOP切面功能

JavaEE JDK动态代理实现AOP切面功能

Django - AOP/中间件

一、什么是AOP     在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可...

二进制杯莫停的博客 1269

Python-SandBox是一个基于django框架开发的轻量级办公平台

SandBox是一个基于django框架开发的轻量级办公平台,主要模块有:权限控制、资产(库存)管理、设备管理、客户信息管理和工单流程管理,其目的在于建立一套规范化、统一化和清晰化的标准服务流程,能够清晰的处理、记录和追踪服务流程等

企业和个人 AI 编程工具怎么选?2025 年 12 款主流工具(Claude/Cursor 等)核心能力 + 收费对比

2025 年最火的 12 款 AI 编程工具,像 Claude、Cursor 这些热门款,我把它们的核心能力、收费标准全扒得明明白白,看完这篇你不用再瞎琢磨,直接就能挑到对的!再说说 Cursor,美国 Cursor Labs 做的,还拿过红杉资本投资,2022 年推出后,2024 年收入直接涨了 6400%,势头很猛。总之,不管你是企业技术管理者、程序员,还是刚入门的 AI 小白,按自己的需求(语言、合规、预算)挑,保准能找到最适合的 AI 编程工具!最后给大家划重点,不同需求直接对号入座:?

hundred98的博客 2800

Django-中间件(切面编程AOP)

中间件使用多就在主应用创建,仅限于子应用就在子引用中创建中间件文件.py之后在settings.py文件中去配置中间件,运行的时候会自动调用中间件。

weixin_65791897的博客 1009

Hive数据迁移

【迁移背景】 本次需要将老集群的hive数据(共30多张表)迁移至新集群中。 老集群版本为CDH5.13,未启用kerberos; 新集群版本为CDH5.14,启用了kerberos。 由于cloudera官方文档说明,在5.x的版本不支持从未启用kerberos的集群与启用了kerberos的集群之间的数据复制。因此无法通过bdr方式进行数据同步。于是采用手工方式进行测试验证。 第一步...

wangkuangood3200的专栏 469

Django_AOP(面向切面)

面向切面(AOP)一、静态文件配置在settings.py 中最底下有一个叫做static的文件夹,用来加载一些模板中用到的资源,比如说是来配置js,css, img, 在工程目录下创建static目录STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static') ]在模板中 首先加载静态文件 之后再调用

一位於同学的博客 2259

从基础知识到PCB设计,打造全能硬件工程师

成为一名出色的硬件工程师需要在多个领域建立坚实的基础。从硬件基础知识、元器件学习、模拟电子电路到PCB设计,以及数字电子电路与通信,每个方面都是构建全面硬件工程师技能集的重要组成部分。通过深入学习和实践这些领域,你将能够在硬件工程领域中取得更多的成就。

weixin_46969363的博客 2717

Jenkins Job DSL:用代码管理CI/CD配置的实践指南

Jenkins 是持续集成(CI)领域的经典开源平台,其核心价值在于自动化构建与交付流程。然而传统 UI 配置方式导致配置不可版本化、难以复现、审计困难,严重制约团队规模化协作效率。Job DSL 作为一种声明式配置即代码(IaC)方案,通过 Groovy 脚本驱动 Jenkins 内部 API,实现 Job、View、Folder 等资源的程序化创建与维护,天然支持 Git 版本控制、权限审计与环境一致性保障。它不替代 Pipeline,而是与其协同构成‘流程定义’与‘基础设施定义’双轨体系,显著提升 C

weixin_33744141的博客 517

Django(二)精美博客搭建(4)用户登录拦截之中间件介绍

本章主要讲述 【用户登录拦截】 的功能的实现大家都知道,正常的一个项目中,不论是java还是python项目,我们通常都会去做一层拦截器,拦截一些路由,又或者在用户请求我们的路由地址中间的过程,我们去做一些处理 那这样的功能的话我们通常会借助 【中间件】 来实现另外本文的话,我还会介绍一下另外一种方法 【装饰器】 的使用 ............

Mikasa的博客 1278

高性能网站设计之缓存更新的套路

看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。 我不知道为什么这么多人用的都是这

代码技巧 1万+

Django+pycharm+mysql 实现用户登录/注册(Django第五篇)

首先是让Django项目与mysql数据库初步简历连接 具体做法见:添加链接描述 这里讲一下我在做这一步遇到的问题。一般Driver 那里的com.mysql.cj.jdbc.Driver是自动显示的,但我一开始不显示 因为我的mysql-connector-java-8.0.19文件夹如下,重复了,(这个是我拿下载到的zip选择解压文件得到的),得选第二个mysql-connector-jav...

qq_38175040的博客 1万+

cJSON库用完后内存泄漏?手把手教你正确使用cJSON_Delete和free释放资源

本文深入解析cJSON库的内存管理机制,重点解决使用后的内存泄漏问题。通过详细讲解cJSON_Delete和free的正确使用方法,帮助开发者在处理JSON数据时有效释放资源,避免内存泄漏。特别适用于嵌入式系统和资源受限环境,提升开发效率和系统稳定性。

weixin_30808693的博客 417

【牛股启动线】副图指标使用技术说明,图文案例分享,通达信炒股指标

如上图,在紫色线在黑色虚线上时,在出现紫色柱线时,通常会出现强势拉升的行情​。柱线加长加上紫色线上扬,进场跟随做多抓强势行情,紫色柱线和紫色线同时做多持续则可以继续持股。如上图,副图指标【牛股启动线】,指标信号包括紫色线走势信号和紫色柱线信号,以及底部的四条虚线技术信号​,还有一条绿色的参考线,一条黑色的虚线两天分档线。如上图,参考买点,紫色柱线开始出现时进场买点,在上图标记的位置对应的就是进场买点​。紫色柱线加长+紫色线上扬,多头共振持股,行情继续拉升阶段,持股待涨或顺势​进场做多。

weixin_69760830的博客 1906

PyCharm搭建Django项目并完成注册登录功能

写在前面: 作为一个java程序员,学习python和django的过程中,不可避免的与java和spring作对比,这篇文章也是希望能给一些做过java web项目的同学一个入门demo,但我也是新学,很多不懂,做出来的demo只保证能跑,并不保证代码质量。 利用PyCharm搭建一个Django项目 打开PyCharm,File->New Project 这里唠叨几句,不想看的可以直接...

heheyixiao233的博客 7739

Codex 实战 Skills:如何用 Skill 让 AI 模拟人工点击,自动完成复杂的前端表单测试

本文介绍如何构建基于Selenium WebDriver的AI Agent技能,实现自动化UI测试流程。主要内容包括: 环境搭建:配置无头Chrome浏览器环境,使用WebDriver Manager自动管理驱动 核心技能开发:通过ID、CSS Selector、XPath等策略定位元素,实现显式等待机制 交互模拟:使用ActionChains模拟鼠标悬停等复杂操作 稳定性优化:解决异步加载问题,确保测试可靠性 Skill封装:将功能模块化,使AI能通过自然语言指令操作Web界面 该方案突破了传统自动化测试

yueyeguzhuo的专栏 147

Django 的登录拦截器

转载自:http://www.cnblogs.com/pythonxiaokang/p/6369828.html

小青蛙 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

利用Django搭建python web项目(简单登录)

目前市面上web项目大多数是由java语言开发(结合spring框架),但这并不意味着只有java语言能够开发web项目,python语言、go语言同样可以做到。本文将利用Django框架(由python语言开发的web框架)来搭建一个简单的web项目,并实现简单登录功能。

qq_33479841的博客 5134

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

程序员Python和Django中间件基础用法详解

首先django的中间件可以在视图函数执行前执行,比如登陆验证、日志记录等,下面简单说明一下中间件的基础用法吧。 1.在django项目文件夹下创建一个用于存放中间件函数的文件夹 文件夹的名字可自定义,本文使用utils作为文件夹名 2.在utils文件夹中创建中间件py文件 如用于登陆验证的中间件loginCheck.py from django.http import HttpResponseRedirect from django.utils.deprecation import Middleware

weixin_52850661的博客 319

django中的中间件用法

开发十年,就只剩下这套Java开发体系了 &gt;&gt;&gt;    ...

weixin_36646275的博客 140

使用django的用户帐号登录 openfire

openfire是一个基于XMPP协议开源的及时通信服务器系统。利用它再加上同样开源的spark,可以轻松的为你的网站用户提供一个类似QQ这样的及时通讯软件,来扩展网站服务,增加用户黏度。openfire 拥有强大功能的同时还拥有强劲的性能,据称单台普通配置的

qqiabc521的专栏 2800

django和mysql写注册_Django+pycharm+mysql 实现用户登录/注册(Django五)

首先是让Django项目与mysql数据库初步建立连接具体做法见:pycharm连接mysql(注意其中第二步MySQL驱动最好安装最新版的)这里讲一下我在做这一步遇到的问题。一般Driver 那里的com.mysql.cj.jdbc.Driver是会自动显示的,但我一开始不显示因为我的mysql-connector-java-8.0.19文件夹如下,重复了,(这个是我拿下载到的zip选择解压文件...

weixin_33978451的博客 676

针对django的check_password()方法用java编写类似的验证

业务需要到记录一下,直接上代码 import lombok.extern.slf4j.Slf4j; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import java.nio.charset.Charset; import java.security.NoSuchAlgorithmException; import java.securi

smallkinghjm的博客 1612

django 登录配置记录

django搭建的web系统中有一个使用ldap校验用户的需求。 之前Java web项目的后台中使用filter防止用户访问一些未授权的资源,比如一个用户未登录则不能访问某些页面。 搜了下django,自带的也有一套认证机制,但是都是要配合数据库使用的。我这里用的ldap,且校验部分的我并不接触,只是去调用其他后台接口获取结果即可。所以使用自带的认证机制配置也有很多问题。 想起filt...

weixin_30586257的博客 265
上一篇: django Echarts画图,饼图,堆叠柱状图,百分比显示
下一篇: django 2.0最新版 urls 不支持正则表达式问题
路路的小豆
博客等级 码龄10年 1763粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值