Django中使用session保持用户登陆连接

本文介绍了在Django中如何使用session来保持用户登录状态。通过在login视图中设置session数据,并在logout视图中清除session,实现用户登录和登出的功能。同时,更新HTML模板以展示用户的登录状态。

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

使用session保持用户登陆连接

  1. 在 view 中 login() 视图函数里增加如下语句

    1. 不允许重复登录语句

    if request.session.get('is_login',None):
         return HttpResponseRedirect(reverse('index'))
    1. 一旦用户名和密码输入正确,就往 session 字典内写入用户状态和数据

    request.session['is_login'] = True
    request.session['user_id'] = db_user.id
    request.session['user_name'] = db_user.name
    
  2. 对于 logout() 方法进行编写。

    def logout(request):
        if not request.session.get('is_login', None):
            # 如果本来就未登录,也就没有登出一说
            return redirect("/index/")
        request.session.flush()
        # 或者使用下面的方法
        # del request.session['is_login']
        # del request.session['user_id']
        # del request.session['user_name']
        return redirect("/index/")

    使用 flush() 方法清除数据比较安全,但是不能保存 session 中的私货

  3. 对于 HTML 文件进行改写

    {% if request.session.is_login %}
          <li><a href="#">当前在线:{{ request.session.user_name }}</a></li>
          <li><a href="/logout/">登出</a></li>
     {% else %}
          <li><a href="/login/">登录</a></li>
          <li><a href="/register/">注册</a></li>
    {% endif %}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值