django中session的使用 中间件的引入python、django、js---python实训day3、4知识点总结

session作用:

    存放在服务器端,通过sessionID保存识别用户的登录状态,同时与之对应的是cookie,Cookies是属于Session对象的一种,cookie位于客户端,session可通过cookie保存在浏览器中,从而能够进行对应的sessionID的传输。同时,保存在cookie中的session也是不安全,别人可以通过cookie保存的信息进行伪造的cookie的操作进行访问服务器端。

当然我们可以利用django中request对象的session来保存一些值,以便直接在前端中使用。

例如:我们登录成功时将用户名保存到session中,

if TUser.objects.filter( username = username, password = password).exists() == True : #过滤
#return HttpResponse("登录成功!")#登录成功
request.session[ "username" ] = username

而我们在前端代码中也能直接调用

欢迎访问:{{request.session.username}} <a href = "/user/loginout" > 退出 </a>

效果如下:


同时我们可以在view.py中的其他方法中加入如下代码:

if not request.session.has_key( "username" ) or not request.session[ "username" ]:
return HttpResponseRedirect( "/user/login" )

即如果没有登录或者没有登录成功的话,转入上述页面。

但这样的话,我们就要在大多数页面跳转方法里都要加上上述的代码,因此我们可以引入中间件的概念。


对应目录下新建middleware文件夹,其文件夹下新建sys.py文件:

sys.py:

from django.utils.deprecation import MiddlewareMixin
from django.http import HttpResponseRedirect
#中间件
class loginMiddleWare ( MiddlewareMixin ):
def process_request ( self , request ):
if request.path != "/user/login" and request.path != "/user/code" :
if not request.session.has_key( "username" ) or not request.session[ "username" ]:
return HttpResponseRedirect( "/user/login" )

上述代码意为除了/user/login和/user/code都会访问session以判断是否登录,否则就回到登录页面。

同时需要在settings.py文件下对应项中新增红框代码:

'aisystem.middleware.sys.loginMiddleWare'

即可实现中间件功能,其余函数就不用再重复写相同代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值