講解對(duì)象:Django 簡(jiǎn)單實(shí)現(xiàn)登錄界面
作者:融水公子 rsgz
知識(shí)梳理:
0.1http協(xié)議是無狀態(tài)的
0.2每次請(qǐng)求都是一次新的請(qǐng)求
0.3不記得以前的請(qǐng)求
0.4客戶端與服務(wù)器端的一次通信就是一次會(huì)話
0.5實(shí)現(xiàn)保持狀態(tài),在客戶端或者服務(wù)器端存儲(chǔ)有關(guān)會(huì)話的數(shù)據(jù)
0.6cookie存儲(chǔ)id:a,session存儲(chǔ)一個(gè)映射a:good,數(shù)據(jù)庫直接存儲(chǔ)good
0.7session在服務(wù)器端,cookie在客戶端,cookie存儲(chǔ)session_id
0.8 狀態(tài)保持的目的:在一段時(shí)間內(nèi)跟蹤請(qǐng)求者的狀態(tài),可以是實(shí)現(xiàn)跨頁面訪問當(dāng)前的請(qǐng)求者的數(shù)據(jù)
0.9 不同的請(qǐng)求者之間不會(huì)共享這個(gè)數(shù)據(jù)
0.10 要用session需要先啟用session(setting.py文件中有設(shè)置)
0.11 啟用session后,每個(gè)HttpRequest對(duì)象都有一個(gè)session數(shù)據(jù)
0.12 session屬性就是類似字典的對(duì)象
0.13 get(key,default=None) 這個(gè)是根據(jù)鍵獲取session值
0.14 clear()可以清空所有的會(huì)話
0.15 flush()刪除當(dāng)前的會(huì)話 刪除會(huì)話的cookie
0.16 還有一種刪除的方式,需要預(yù)先引入一個(gè)類,以后再說
1 模板下面新建main.html
內(nèi)容:
<!DOCTYPEhtml>
<htmllang="en">
<head>
<meta charset="UTF-8">
<title>我的</title>
</head>
<body>
<h1>歡迎:{{username}}</h1>
<a href="/rsgz/login">登錄</a>
</body>
</html>
2 模板下面新建login.html
<!DOCTYPEhtml>
<htmllang="en">
<head>
<meta charset="UTF-8">
<title>登錄</title>
</head>
<body>
<form action="/rsgz/showmain/" method="post">
<input type="text" name="username"/>
<input type="submit" value="登錄">
</form>
</body>
</html>
3 添加三條路由
url(r'^main/$', views.main),
url(r'^login/$', views.login),
url(r'^showmain/$', views.showmain),
4 添加視圖函數(shù)
fromdjango.shortcuts import redirect
defmain(request):
# 取出session
username=request.session.get('name','游客')# 第二個(gè)參數(shù)表示取值沒有取到就是游客代替
return render(request,'myapp/main.html',{'username':username})
deflogin(request):
return render(request,'myapp/login.html')
defshowmain(request):
username=request.POST.get('username')
request.session['name']=username # 存session
return redirect('/rsgz/main/')
5 開啟服務(wù)器
pythonmanage.py runserver
6 網(wǎng)頁測(cè)試
網(wǎng)址:http://127.0.0.1:8000/rsgz/main/
會(huì)調(diào)到注冊(cè)頁面,我們完善用戶名之后點(diǎn)擊登錄
之后又會(huì)返回到這個(gè)界面了。游客被我的大名取代了 歡迎:融水公子
7 打開Navicat軟件 數(shù)據(jù)庫查看session緩存記錄
點(diǎn)擊這個(gè)session
上面就是session緩存的記錄了。
聯(lián)系客服