cookies&session

发布时间 2023-12-06 17:34:56作者: 木屐呀

 

COOKIES:

 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),
 8     url(r'^index/', views.index),
 9     url(r'^logout/', views.logout),
10 ]
urls.py
 1 from django.shortcuts import render,redirect,HttpResponse
 2 
 3 # Create your views here.
 4 
 5 def login(request):
 6     print(request.COOKIES)
 7     if request.method == "POST":
 8         name = request.POST.get('username')
 9         pwd = request.POST.get('password')
10         if name == 'laozhao' and pwd == '123':
11             #COOKIES
12             ret = redirect('/index/')
13             ret.set_cookie("username",name,max_age=10)
14             return ret
15     return render(request,"login.html")
16 
17 def index(request):
18     if request.COOKIES.get("username",None) == "laozhao":
19         name = request.COOKIES.get("username",None)
20         return render(request,"index.html",locals())
21     else:
22         return render(request,"login.html")
23 
24 def logout(request):
25     return HttpResponse('ok')
views.py
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <form action="/login/" method="post">
 9         <p>用户名:<input type="text" name="username"></p>
10         <p>密码:<input type="password" name="password"></p>
11         <input type="submit" value="提交">
12     </form>
13 </body>
14 </html>
login.html
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <h1>name</h1>
 9 </body>
10 </html>
View Code

session:

 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),
 8     url(r'^index/', views.index),
 9     url(r'^logout/', views.logout),
10 ]
views.py
 1 from django.shortcuts import render,redirect,HttpResponse
 2 from APP01 import models
 3 # Create your views here.
 4 
 5 def login(request):
 6     print("COOKIES",request.COOKIES) #验证登陆成功后返回的cookie键值对 #COOKIES {'sessionid': 'c7ts8f4i6c9mldsovyau101gxdw9c4ap'}
 7     print("SESSION",request.session) #SESSION <django.contrib.sessions.backends.db.SessionStore object at 0x0000026E83B6AD30>
 8     if request.method == "POST":
 9         name = request.POST.get("username")
10         pwd = request.POST.get("password")
11         if models.UserInfo.objects.filter(username=name,password=pwd).count():
12             ##COOKIE SESSION
13             # 设置session内部的字典内容
14             request.session["is_login"] = True
15             request.session["username"] = name
16             request.session["password"] = pwd
17             # 登录成功就将url重定向到后台的url
18             return redirect("/index/")
19     # 登录不成功或第一访问就停留在登录页面
20     return render(request,"login.html")
21 
22 def index(request):
23     #if request.COOKIES.get("username",None) == "yuan": #通过cookie验证登录信息,防止未登录而可以直接登陆成功
24         #name = request.COOKIES.get("username",None)
25         #return render(request,"index.html",locals())
26 
27     if request.session.get("is_login",None):
28         # 这里必须用读取字典的get()方法把is_login的value缺省设置为False,
29         # 当用户访问backend这个url先尝试获取这个浏览器对应的session中的
30         # is_login的值。如果对方登录成功的话,在login里就已经把is_login
31         # 的值修改为了True,反之这个值就是False的
32         cookie_content = request.COOKIES
33         session_content = request.session
34         username = request.session.get("username",None)
35         return render(request,"index.html",locals())
36     else:
37         # 如果访问的时候没有携带正确的session,就直接被重定向url回login页面
38         return redirect("/login/")
39 
40 def logout(request):
41     """
42     直接通过request.session['is_login']回去返回的时候,
43     如果is_login对应的value值不存在会导致程序异常。所以
44     需要做异常处理
45     """
46     try:
47         #删除is_login对应的value值
48         del request.session['is_login']
49     except KeyError:
50         pass
51     #点击注销之后,直接重定向回登陆界面
52     return redirect('/login/')
views.py
1 from django.db import models
2 
3 # Create your models here.
4 
5 class UserInfo(models.Model):
6     username  = models.CharField(max_length=12)
7     password = models.CharField(max_length=18)
models.py
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <h1>cookie:{{ cookie_content }}</h1>
 9     <h1>session:{{ session_content }}</h1>
10     <p1>{{ username }}</p1>
11     <a href="/logout/">注销</a>
12 </body>
13 </html>
index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/login/" method="post">
        <p>用户名:<input type="text" name="username"></p>
        <p>密码:<input type="password" name="password"></p>
        <input type="submit" value="提交">
    </form>
</body>
</html>
login.html