django的session的登录验证

 

urls.py

from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^login/', views.login, name='login'),
    url(r'^index/', views.index, name='index'),
    url(r'^logout/', views.logout, name='logout'),
]

views.py

# -*- coding:utf-8 -*-
from django.shortcuts import render, redirect

# Create your views here.

user_info = {
    'lily': {'pwd': '123'},
    'rose': {'pwd': '123'}
}

def login(request):
    if request.method == 'POST':
        u = request.POST.get('uu')
        p = request.POST.get('pp')
        s = request.POST.get('ss')
        if user_info.get(u):
            if p == user_info.get(u).get('pwd'):
                # 生成随机字符串保存在cookie中 sessionid : xxxxx
                # 保存在session中(数据库)
                # 在服务端,每个随机字符串对应一个字典,保存信息
                request.session['user111'] = u
                request.session['is_login'] = True
                # 设置自动注销登录
                if s == '1':
                # 括号中数字单位为秒
                    request.session.set_expiry(5)
                elif s == '2':
                    request.session.set_expiry(20)
                elif s == '3':
                    request.session.set_expiry(60)

                return redirect('/index/')
    return render(request, 'login.html')

def index(request):
    u = request.session.get('user111')
    if request.session.get('is_login', None):
        return render(request, 'index.html', {'u': u})
    else:
        return render(request, 'login.html')

def logout(request):
    request.session.clear()
    return redirect('/login/')

template-login

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <form action="/login/" method="post">
        {% csrf_token %}
        <p><input type="text" placeholder="username" name="uu" /></p>
        <p><input type="password" placeholder="password" name="pp" /></p>
        <p>自动退出登录时间:
        <select name="ss">
            <option value="1">5s</option>
            <option value="2">20s</option>
            <option value="3">1m</option>
        </select></p>
        <input type="submit" value="提交" />
    </form>
</body>
</html>

template-index

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    welcome to {{ u }}
<a href="/logout/">exit</a>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值