操作セッションジャンゴの例

セッションプロジェクトファイル:

 

 

 

テンプレートテンプレート:

login.htmlと

1  {%負荷静的%}
 2  <!DOCTYPE HTML > 
3  < HTML のlang = "EN" > 
4  < ヘッド> 
5      < メタのcharset = "UTF-8" > 
6      < タイトル>ログイン</ タイトル> 
7  </ ヘッド> 
8  < ボディ> 
9  < DIV > 
10      用户名:< 入力タイプ= "テキスト" ID = "ユーザ名"> 
11      密码:< 入力タイプ= "パスワード" ID = "パスワード" >  < BR > 
12      < ボタンID = "送信" >登录</ ボタン> < パンID = "警告" スタイル= "色:赤" > < / パン> 
13      {%csrf_token%}
 14  </ DIV > 
15  </ ボディ> 
16  < スクリプトSRC jqueryの-3.4.1」= "{%、静的。jsの%}」 > </ スクリプト> 
17。 {#<! - <SCRIPT SRC = "{%静的な'JS / login.js'}%"> </ SCRIPT> - > <! - アヤックスは、URLが解析を逆に持っているだけに置きますHTMLテンプレートに- > #}
 18である < スクリプト> 
。19  $(関数(){
 20          $(' #submit ' ).click(関数(){
 21は             $アヤックス({
 22は                 :URL " {%URL「ログイン「}%23は                 タイプ:' POST ' 24                  データ:
{ 25                     ユーザ名:$(' #username ' ).val()、
 26                      パスワード:$(' #password ' ).val()、
 27                      csrfmiddlewaretoken:$(' 入力[名前= csrfmiddlewaretoken] ' ).val()、// 可以直接放在ヘッダ里边
28                  }、
 29                  成功:関数(応答){
 30                      にconsole.log(レスポンス)
 31                      であれば(のResponse.Status === 0 ){
 32                          //$( '#が提出')。 (後に'<span>の<私> 「口座番号やパスワードが</ I> </ span>を誤っている)
33がある                         ($ ' #warning ' )の.text(' 口座番号やパスワードが間違っています34は                     } そう IF (のResponse.Status === 1 ){
 35                          LOCATION.HREF = response.url
 36                      }
 37                  }
 であり、38              })
 39          )}
 40      )};
 41である </ スクリプト> 
42です </ HTML >
login.htmlと

 

  index.htmlを

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>index</title>
 6 </head>
 7 <body>
 8 <div>
 9     <h1>欢迎来到首页</h1>
10 </div>
11 <a href='{% url 'more' %}'>more</a>
12 </body>
13 </html>
index.html

  more.html

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>more</title>
 6 </head>
 7 <body>
 8 <div><h1>更多信息</h1></div>
 9 </body>
10 </html>
more.html

viwes.py 

 1 from django.shortcuts import render,redirect
 2 from django.http import JsonResponse
 3 from django.urls import reverse
 4 # Create your views here.
 5 def login(request):
 6     if request.method=='GET':
 7         return render(request,'login.html')
 8     elif request.method=='POST':
 9         name=request.POST.get('username')
10         psd=request.POST.get('password')
11         if name=='yang' and psd=='123':
12             #在使用session之前必须在数据库创建相关的表(django_session)
13             #调用request.session首先会接收请求头部的cookie是否有sessionid,进行表查询对比
14             #如果有重新生成一个sessionid进行覆盖更新记录,
15             # 没有则新建存进表中的session_key,同时将字典信息加密自动存进表中的session_data字段
16             request.session['status']=True
17             request.session['name']=name
18             status=1
19             url=reverse('index')
20         else:
21             status=0
22             url=''
23         return JsonResponse({'status':status,'url':url})
24  
25 def login_auth(func):
26     def inner(request):
27         if request.session.get('status'):#在判断网页请求的状态时,直接调用request.session从djang_session表中读取数据验证
28             return func(request)
29         else:
30             return redirect('login')
31     return inner
32 @login_auth
33 def index(request):
34     return render(request,'index.html')
35  
36 @login_auth
37 def more(request):
38     # request.session.flush()#同时删除客户端和服务端的session
39     return render(request,'more.html') 
views.py

urls.py 

 1 from django.conf.urls import url
 2 from django.contrib import admin
 3 from app01 import views
 4  
 5 urlpatterns = [
 6     url(r'^admin/', admin.site.urls),
 7     url(r'^login/', views.login, name='login'),
 8     url(r'^index/', views.index, name='index'),
 9     url(r'^more/', views.more, name='more'),
10 ]
urls.py 

おすすめ

転載: www.cnblogs.com/open-yang/p/11222497.html