Django 之 Cookie的使用(判断是否已登陆)

博客介绍了利用cookie判断用户是否有效登录系统以获取访问权。若用户跳过登录页直接访问主页,会返回登录页。还给出了相关的HTML代码(login.html和home.html)以及Python代码。

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

cookie作用

根据当前浏览器的cookie值,判断用户是否已经有效登陆到系统,获取访问权。
当用户跳过登陆页面,直接访问home,直接返回到login.html页面

HTML代码

login.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>登陆页面</h1>
    <form action="/ormtest/login/" method="post">
        <p>
            用户名:<input type="text" name="user">
        </p>
        <p>
            密码:<input type="password" name="pwd">
        </p>
        <p>
            <input type="submit" value="提交">
        </p>
    </form>
</body>
</html>
home.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>我是首页啊</title>
</head>
<body>
    <h1>我是首页啊</h1>
</body>
</html>

Python 代码

def login(request):
    if request.method == "GET":
        return render(request,"login.html")
    else:
        user = request.POST.get("user")
        pwd = request.POST.get("pwd")
        if user == "kang" and pwd == "123456":
            rep = redirect("/ormtest/home/")
            #设置一个加密的cookie,默认值为"1",加密条件"MingKangZhou"
            rep.set_signed_cookie("is_login","1",salt="MingKangZhou")
            return rep
        else:
            return render(request, "login.html")

def home(request):
    #获取当前浏览器"is_login"的cookie值
    ret = request.get_signed_cookie("is_login",default="0",salt="MingKangZhou")
    if ret == "1":     #如果为1,代表已经登陆成功
        return render(request,"home.html")
    else:              #如果不为"1",即返回到登陆页面
        return redirect("/ormtest/login/")

转载于:https://blog.51cto.com/12965094/2396300

Django 中,可以使用 session 来保存用户登录状态。当用户登录成功后,可以将用户的信息存储在 session 中,下次用户访问时,可以从 session 中获取用户信息,从而判断用户是否已经登录。 具体实现步骤如下: 1. 在用户登录成功后,将用户信息存储在 session 中。可以使用 Django 提供的 `session` 对象来实现,例如: ```python # views.py def login(request): # 处理登录逻辑 # ... # 用户登录成功后,将用户信息存储在 session 中 request.session['user_id'] = user.id request.session['username'] = user.username # 跳转到首页 return redirect('/') ``` 2. 在需要判断用户是否登录的视图函数中,从 session 中获取用户信息,如果用户信息存在,则表示用户已经登录。可以使用 `request.session.get()` 方法来获取 session 中的数据,例如: ```python # views.py def profile(request): # 判断用户是否登录 user_id = request.session.get('user_id') if not user_id: # 用户登录,跳转到登录页面 return redirect('/login/') # 获取用户信息 user = User.objects.get(id=user_id) # 渲染用户资料页面 return render(request, 'profile.html', {'user': user}) ``` 在上面的例子中,如果 `user_id` 不存在,则表示用户登录,跳转到登录页面。如果 `user_id` 存在,则表示用户已经登录,获取用户信息并渲染用户资料页面。 需要注意的是,Django 默认使用 Cookie 来存储 session 数据,因此需要在 `settings.py` 中设置 `SESSION_ENGINE` 和 `SESSION_COOKIE_NAME` 等参数来控制 session 的行为。另外,为了保护 session 数据的安全性,建议使用 HTTPS 协议来访问网站。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值