會話保持--cookie、session
實例1:使用cookie讓瀏覽器記錄用戶登錄次數
view.py代碼如下:
def index(request): #會話保持cookie #獲取瀏覽器的cookie num = request.COOKIES.get('num') if num: num = str(int(num)+1) else: num = 1 response=render(request,'teacher/index.html',context={ 'num':num }) #設置cookie response.set_cookie('num',num,max_age=20) #max_age保存多少秒,整數,expiry設置過期時間 return response
index.html代碼如下:
<h1 style="color: red">我是第<span style="color: yellowgreen"> {{ num }}</span>次訪問</h1>
結果展示如下:
2.session會話保持
在項目的setting.py中注冊
INSTALLED_APPS = [
'django.contrib.sessions', #這兩個都是session需要用到的
]
MIDDLEWARE = [
'django.contrib.sessions.middleware.SessionMiddleware',
]
添加上以后還需要進行數據遷移,如果默認存在上面,以前做數據遷移的時候已經做了,不需要重復做,django 默認啟動session.
django數據保存在django_session表中
session方法:
實例二:session技術依賴於cookie技術。使用session實現客戶端的登錄與登出
view.py代碼如下:
def index(request): #會話保持session name = request.session.get('name') return render(request,'teacher/index.html',context={'name':name}) def login(request): if request.method == 'POST': username = request.POST.get('username','') password = request.POST.get('password','') if username == 'xinlian' and password == '111': request.session['name']=username request.session.set_expiry(10) #設置過期時間 return redirect(reverse('teacher:index')) return render(request,'teacher/login.html')
def logout(request):
request.session.flush()
return redirect(reverse('teacher:index'))
index.html代碼如下:
用戶名:{{ name|default:"未登錄" }} <a href="{% url 'teacher:logout' %}">安全退出</a>
login.html代碼如下:
<h1>登錄</h1> <form action="" method="post"> {% csrf_token %} <p>用戶名:<input type="text" name="username"></p> <p>密碼:<input type="password" name="password"></p> <p><input type="submit" value="登錄"></p> </form>
urls.py中添加:
path('index/', views.index,name='index'),
path('login/', views.login),
path('logout/',views.logout,name='logout'),
實現結果如下: