在Django自定义用户模型中检查会话

0 投票
1 回答
637 浏览
提问于 2025-04-18 05:59

我正在创建一个自定义用户模型,这里是我在models.py中的代码:

class Users(models.Model):
    username = models.CharField(max_length=30)
    password = models.CharField(max_length=30)
    contactnos = models.IntegerField()
    address = models.CharField(max_length=50)
    fname = models.CharField(max_length=30)
    mname = models.CharField(max_length=30)
    lname = models.CharField(max_length=30)

    def __unicode__(self):
        return self.username

在views.py中,我有这一行代码:

def auth_view(request):
    try:
        m = Users.objects.get(username=request.POST['username'])
        if m.password == request.POST['password']:
            request.session["id"] = m.id
            myid = request.session["id"]
            if myid == m.id:
                return render(request, "profile.html", {
                    'username': m,
                    'myid': myid
                })
            else:
                 HttpResponse("Session has expired. Log in again.")
    except Users.DoesNotExist:
        return HttpResponseRedirect('/account/invalid')

上面的代码可以检查用户是否在数据库中,并能够重定向到个人资料页面。我想要实现的是,如果用户注销,session(会话)密钥应该过期,或者重定向到另一个页面,而不是停留在个人资料页面。

我想问一下,这真的可能吗?谢谢。

1 个回答

0

只需要再创建一个用于登出的视图。

def logout_view(request):
    try:
        del request.session['id']
    except KeyError:
        pass

    return HttpResponseRedirect('/home')

撰写回答