Django:学习笔记(5)——会话

本文详细介绍Django框架中会话(session)的配置与使用方法,包括中间件配置、会话引擎选择及如何在视图中操作会话数据。通过实例演示如何限制用户重复提交评论,确保网站交互的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django:学习笔记(5)——会话

配置中间件

  Django中使用会话,需要配置一个中间件。

  

配置会话引擎

  默认情况下,Django在数据库中存储sessions(使用了django.contrib.sessions.models.Sesson模型)。但是你可以选择将其存储在更快的文件系统或缓存中。

  我们在这里,使用数据库存储会话数据。配置好中间件后,运行manage.py migrate后会在数据库中创建一张session数据存储表。

  

使用会话

在Views中使用会话

  一旦SessionMiddleware被激活,每一个HttpRequest对象,都有一个session属性,它的基类是SessionBase,我们可以调用它的相关方法来操作会话数据。

  

不在view中使用会话

  如果我们还想在其他地方操作会话,可以直接导入SessionStore,如果使用了基于数据库的会话引擎,直接从对应的包下导入即可,如果配置了其他引擎,可以import_module导入设置文件中配置的会话引擎。 

   

实例:仅允许提交一次

  我们设置当用户提交评论后,想再次提交就会收到拒绝信息。

def post_comment(request, new_comment):
    if request.session.get('has_commented', False):
        return HttpResponse("You've already commented.")
    c = comments.Comment(comment=new_comment)
    c.save()
    request.session['has_commented'] = True
    return HttpResponse('Thanks for your comment!')

  这个代码写的真的好,在没有设置has_commented为true的时候,默认返回false,直到用户提交成功后,再次访问,此时得到true,返回You've already commented!

 

转载于:https://www.cnblogs.com/MrSaver/p/10428062.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值