session會話
阿新 • • 發佈:2018-10-05
support content message 字符集 views sage 用戶 spa endif
session會話
1.views.py文件使用session會話
from django.shortcuts import render from django.http import HttpResponse from django.shortcuts import redirect # Create your views here. from app_login.models import User import forms #導入forms表單 def index(request): return render(request, 'login/index.html') def login(request): if request.session.get('is_login'): #不允許重復登陸 return redirect("/index/") if request.method=="POST": #提交表單後,滿足請求為post就執行下面的內容 message = '所有字段都必須填寫' login_form=forms.UserForm(request.POST) #獲取每個input標簽 # username = request.POST.get('username') #獲取表單中輸入的用戶名和密碼 # password = request.POST.get('password') # print(username,password) # if username and password : #用戶名和密碼都不為空 # username=username.strip() #清除用戶名前後的空格 if login_form.is_valid(): #這個就是用於驗證輸入表單內容的合法性 username=login_form.cleaned_data['username'] #cleaned_data會將input標簽中的變量和值作為以字典的一個元素形式表現出來 password=login_form.cleaned_data['password'] # user = User(username, password) #添加到User表中 # user.save() #存儲到數據庫中 #查詢數據庫中是否存在該用戶名和密碼 t_username=User.objects.filter(name=username) print(t_username) t_password=User.objects.filter(password=password) if t_username and t_password: request.session['is_login']=True #寫入用戶狀態和數據 # request.session['user_id']=t_username.id request.session['user_name']=username return redirect('/index/') elif not t_username: # return HttpResponse('用戶名不存在') message='用戶名不存在' elif not t_password: # return HttpResponse('密碼不存在') message='密碼不存在' return render(request,'login/login.html',{"message":message,"login_form":login_form}) #將message信息通過模板傳遞到網頁 login_form=forms.UserForm() #保留輸入的錯誤字段 return render(request,'login/login.html',{"login_form":login_form}) def register(request): return render(request,'login/register.html') def logout(request): if not request.session.get('is_login'): #如果登陸狀態為未登陸 return redirect('/index/') #就跳轉至主頁(也就是依然停留在當前頁面) request.session.flush() #清除session記錄 return redirect('/index/')
2.修改base.html文件
{% load staticfiles %} <!--加載靜態方法--> <!DOCTYPE html> <html lang="zh-CN"> <head> <!--設置字符集、瀏覽器優先渲染模式以及可視區域設置等,不用修改,按模板默認的就行--> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- 上述3個meta標簽*必須*放在最前面,任何其他內容都*必須*跟隨其後! --> <title>{% block title %}base{% endblock %}</title> <!--通過模板設置title動態加載--> <!-- Bootstrap 將放入static下對應的內容加載進來,導入bootstrap樣式文件,通過模板設置動態加載--> <link href="{% static '/bootstrap-3.3.7-dist/css/bootstrap.css' %}" rel="stylesheet"> {% block css %}{% endblock %} <!--通過模板設置css動態加載--> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]><!--用於支持ie9以下的版本支持h5,按alt+enter點擊下載即可--> <script src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script> <![endif]--> <!-- 導入jquery插件,通過模板設置動態加載 --> <script src="{% static 'js/jquery-3.3.1.js' %}"></script> <!-- 導入bootstrap的js文件,通過模板設置動態加載--> <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script> </head> <body> <nav class="navbar navbar-default" role="navigation"> <div class="container-fluid"> <div class="navbar-header"> <a class="navbar-brand" href="#">主頁</a> </div> <ul class="nav navbar-nav navbar-right"> {% if request.session.is_login %} <!--views.py文件中登陸成功後賦值未True,這裏拿到True後就進入判斷語句--> <li><a href="#">當前在線:{{ request.session.user_name }}</a></li> <!--這裏顯示的是views文件中輸入的username,也就是當前登陸成功的用戶名--> <li><a href="/logout/">登出</a></li> <!--導航條點擊登出跳轉至登出頁面--> {% else %} <!--如果登陸成功就不會執行下面的代碼,避免出現登陸成功後依然顯示註冊登陸的情況,另外登出或未登陸時訪問網頁才會出現下面的內容--> <li><a href="#"><span class="glyphicon glyphicon-user"></span> 註冊</a></li> <!--導航條點擊註冊跳轉至註冊頁面--> <li><a href="/login/"><span class="glyphicon glyphicon-log-in"></span> 登錄</a></li> <!--導航條點擊登陸跳轉至登陸頁面--> {% endif %} </ul> </div> </nav> {% block content %}{% endblock %} <!--為具體主體內容留下接口--> </body> </html>
3.修改主頁頁面index.html
{% extends 'base.html' %} <!--加載base模板內容--> {% block title %}主頁{% endblock %} <!--這裏不使用base模板的,自定義title--> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>主頁</title> </head> <body> {% block content %} {% if request.session.is_login %} <!--這裏判斷登陸成功,就進入歡迎頁面--> <h1>你好,{{ request.session.user_name }}!歡迎回來</h1> {% else %} <!--未登陸就顯示以下公開內容的頁面--> <h1>你尚未登陸,只能訪問公開內容!</h1> {% endif %} <!--結束循環--> {% endblock %} </body> </html>
4.顯示效果
登陸成功
登出
session會話