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)】 

django设置session及登录退出案例_第1张图片                  django设置session及登录退出案例_第2张图片

 

 

登录退出页面 

从浏览器输入【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的语句


登录|退出

{% if request.session.name != None %}

欢迎:{{ request.session.name }} | 退出

{% else %} 登录 | 退出 {% endif %}

登录页面

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

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

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


{% csrf_token %}

退出操作

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

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

 

 

你可能感兴趣的:(django,python,后端)