Python学习第三十五课——COOKIES ADN SESSION

Urls.py

from django.conf.urls import url
from django.contrib import admin
from django.urls import path
from  app import views
urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^login/',views.login),
    url(r'^index/',views.index),
]

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>


    <style>
        *{
            margin: 0;
            padding: 0;
        }


    </style>
</head>
<body>


<form action="/login/" method="post">
    <p>姓名<input type="text" name="user"></p>
    <p>密码<input type="password" name="pwd"></p>
    <p><input type="submit"></p>

</form>

</body>
</html>

view.py(SESSION)

from django.shortcuts import render, redirect

SESSION
def login(request):
    # print("SESSION",request.session)
    if request.method == "POST":
        name = request.POST.get("user")
        pwd = request.POST.get("pwd")
        if name == "han" and pwd == "123":  # 不要直接123
            request.session["is_login"] = True

            request.session["user"] = name

        return redirect("/index/")

    return render(request, "login.html")


def index(request):

    if request.session.get("is_login", None):
        name = request.session.get("user", None)
        return render(request, "index.html", locals())
    else:
        return redirect("/login/")

 

view.py(COOKIES)

from django.shortcuts import render, redirect

import datetime
# Create your views here.

# COOKIES 可以自己单独工作,但是会把所有的信息存在客户端,不安全。
# SESSION 是将获得的数据存在数据库的一张表中,安全

def login(request):
    if request.method == "POST":
        name = request.POST.get("user")
        pwd = request.POST.get("pwd")
        if name == "han" and pwd == "123":  # 不要直接123
            ret = redirect("/index/")

            # 创建一个键值对  max_age=10 登录完在十秒内可以继续进入index页面

            ret.set_cookie("username", name,max_age=10)
            # 在当你登录的时间的基础上加三天,就不能访问了
            ret.set_cookie("username", name,expires=datetime.datetime.utcnow() + datetime.timedelta(days=3))

            # 最好是写一样,然后写的时间是一样的,防止出现意外

            return ret

    return render(request, "login.html")


def index(request):
    if request.COOKIES.get("username",None):  # 获得这个键值对
        name = request.COOKIES.get("username",None)
        return render(request, "index.html", locals())
    else:
        return redirect("/login/")

 

posted @ 2020-03-12 13:35  PY憨  阅读(199)  评论(0编辑  收藏  举报