django设置session及登录退出案例

session【关闭浏览器session失效】安全型较高

数据库上的session(不删还在)

       1. 在settings.py中添加

SESSION_ENGINE='django.contrib.sessions.backends.db'

        2. settins.py中的MIDDLEWARE 中确保没有注释

MIDDLEWARE = [
    'django.contrib.sessions.middleware.SessionMiddleware',
]

        3. settins.py中的INSTALLED_APPS 中确保没有注释

INSTALLED_APPS = [
    'django.contrib.sessions',
]

缓存上的session(关浏览器失效)

        1. 在settings中添加

SESSION_ENGINE='django.contrib.sessions.backends.cache'

        2. settins.py中的MIDDLEWARE 中确保没有注释

MIDDLEWARE = [
    'django.contrib.sessions.middleware.SessionMiddleware',
]

session的建立

  1. 设置session【request.session[key]=value】
  2. 获取session【request.session[key]】
  3. 删除session【del request.session[key]】

 

登录退出 

建立三个path分别对应【登录退出页面(index),登录页面(fform),退出操作(tuichu)】 

6ac24b11861a408ba2dceaac2dffd00c.png                  b3d694da98264affbd5d9497b77c341f.png

 

 

登录退出页面 

从浏览器输入【127.0.0.1:8000/index/】默认使用的是GET方法,从表单传递过来的是POST【method=’post‘】

def index(request):#主页面展示登录|退出
    
    if request.method == 'POST':
        '''从表单获取数据'''
        request.session['name']=request.POST.get('name')
        request.session['pwd']=request.POST.get('pwd')
        print(request.session['name'], request.session['pwd'])
        '''用户是张三且密码是123才算登录成功'''
        if(request.session['name'] == '张三')and(request.session['pwd'] == '123'):
            return render(request,'index.html')
        else:
            request.session['mes']='error!'
            return redirect("/fform/")

    request.session['mes']=''
    return render(request, 'index.html')

 设置了session['mes']=''【在fform判断是否正确,或者匹配成功后删除此session】,执行index.html页面,name为空执行else的语句

<body>
<h1>登录|退出</h1>
{% if request.session.name != None  %}
    <p><span>欢迎:{{ request.session.name }} | <a href="/tuichu/">退出</a> </span></p>
{% else %}
    <span><a href="/fform/">登录</a> | <a href="/tuichu/">退出</a> </span>
{% endif %}
</body>

登录页面

点击登录,跳转到登录页面(/fform/),进入froms.html页面

def fform(request):
    return render(request,'forms.html')

 从index页面获取的mes为空不打印,然后提交使用post请求跳转到登录页面,登录页面获取提交的数据并存入session中【密码可以不存】,由其判断name与pwd是否符合预期值,若符合则进入index.html,若不符合则设置session['mes']并跳转回登录页面,此时的mes不为空,打印其值,【字体设置为红色】

<body>
<form method="post" action="/index/">
    {% csrf_token %}
    <p><label>
        姓名:<input type="text" name="name">
        {% if request.session.mes == None %}
            <span></span>
        {% else %}
            <span style="color: red">{{ request.session.mes }}</span>
        {% endif %}
    </label></p>
    <p><label>
        密码:<input type="text" name="pwd">
    </label></p>
    <label>
        <input type="submit" value="提交">
    </label>
</form>
</body>

退出操作

删除session的name【session['name']失效,即name为空】,并返回登录退出页面

def tuichu(request):
    del request.session['name']
    del request.session['pwd']
    return redirect('/index/')

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值