IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python的Django框架中from表单设置Cookie,Session -> 正文阅读

[Python知识库]python的Django框架中from表单设置Cookie,Session

首先是看一下整体的架构

?在app01的models.py咱们先创建一张简单的用户表

from django.db import models

# Create your models here.
class UserInfo(models.Model):
    name=models.CharField(max_length=21)
    pwd=models.CharField(max_length=21)

然后再终端上通过?python3 manage.py makemigrations,?python3 manage.py migrate两条命令上传到django自带的数据库并添加两条如下信息

?接着就是视图和逻辑部分啦

视图有两个:登陆页面(login)和成功时的页面(index)

login代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    {% csrf_token %}
    用户名:<input type="text" name="user">
    密码:<input type="text" name="pwd">
   <input type="submit" value="submit">

</form>

</body>
</html>

index代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h3>hi,{{ username }}</h3>
<p>上次登录时间:{{ last_time }}</p>
<a href="/logout/">注销</a>

</body>
</html>

在urls.py中代码如下:

from django.contrib import admin
from django.urls import path
from app01 import views as v1

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', v1.login),
    path('index/', v1.index),
    path('login_session/', v1.login_session),
    path('index_session/', v1.index_session),
    path('logout/', v1.logout),
]

恩恩....这里是一些路径部分,输入不同的路径会在app01.py中views.py执行不同的函数

往下看

app01中views.pys.py的代码中

1.这是login视图中的cookie设置,已经写了些详细的说明

这是我写的正确的用户名和密码,按下submit后就反回sussess

?

from django.shortcuts import render,HttpResponse,redirect

# Create your views here.
#导入表
from app01.models import *
# 这是cookie部分
def login(request):
    # 这是请求方法的判断
    if request.method=='POST':
      #得到user和pwd的值,()里注意要和相对视图函数中用户名和密码中name值相对应
      user=request.POST.get('user')
      pwd=request.POST.get('pwd')
      #取模型类对象
      usr=UserInfo.objects.filter(name=user,pwd=pwd).first()
      #判断是否有值
      if usr:
          response=HttpResponse("success")
          #cookie的过期时间,12s
          # response.set_cookie("is_login",True,max_age=12)
          response.set_cookie("is_login",True)
          #传进用户
          # import datetime 设置用户过期时间
          # data=datetime.datetime(year=2050,month=12,day=20,hour=12,second=13)
          # response.set_cookie("username",usr.name,expires=data)

          #传进用户的名字和密码,设置路径,默认是根路径 这里设置为/index/路径,记得加两个斜杠,
          response.set_cookie("username",usr.name,path='/index/')
          response.set_cookie("pwd",usr.pwd)
          print('usr:',response)
          #usr: <HttpResponse status_code=200, "text/html; charset=utf-8">
          print('usr_cookie:',request.COOKIES)
          #usr_cookie: {'csrftoken': 'kvz6iQxYX7i56QPrSsxLgmvsRxdoOmGhBgjAGNcfBbEe2bu3DdBmia1nJmi9UpKH', 'is_login': 'True', 'pwd': '123', 'last_visit_time': '2022-10-25 13:55:58'}
          return response


    return render(request,"login.html")#不成功就返回当前的页面

index代码如下

def index(request):
    #带着login的cokkie的设置参数过来的
    print('index_cookie',request.COOKIES)
    #index_cookie {'username': 'atom', 'csrftoken': 'kvz6iQxYX7i56QPrSsxLgmvsRxdoOmGhBgjAGNcfBbEe2bu3DdBmia1nJmi9UpKH', 'is_login': 'True', 'pwd': '123', 'last_visit_time': '2022-10-27 00:16:56'}

    is_login=request.COOKIES.get('is_login')
    if is_login:
        username=request.COOKIES.get('username')
        import datetime
        now=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        #这是从cookie中取出来的,先执行最后一个
        last_time=request.COOKIES.get("last_visit_time")
        print(last_time)
        #2022-10-27 00:16:56
        #把last_time写到模版中
        reponse=render(request,'index.html',locals())
        #把推出的时间写到cookie中
        reponse.set_cookie("last_visit_time",now)
        return reponse

    else:
        return redirect('/login/')

然后就访问index页面,打印的结果我已经注释在index函数中了,一定要看html表中和函数中的对应关系

?

好啦,Cookie一些设置和操作就完成啦?

接下来就是session的一些设置了,还在这个views.py中

2.这是session设置的函数,基本和cookie差不多,有登陆(login_session)和登陆成功(index_session)的两个函数,代码如下:

def login_session(request):
    if request.method=='POST':
      user=request.POST.get('user')
      pwd=request.POST.get('pwd')
      #去模型类对象
      usr=UserInfo.objects.filter(name=user,pwd=pwd).first()
      if usr:
          #存储session和设置session中的一些参数
          import datetime
          request.session["is_login"]=True
          request.session["username"]=usr.name
          now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
          request.session["last_visit_time"]=now


          return redirect('/index_session/')#登陆成功直接重定向到成功的页面中



    return render(request,'login.html')


def index_session(request):
    print("is_login:",request.session.get('is_login'))
    var=request.session.get("username")
    if not var:
        return redirect("/login_session/")
    username=request.session.get("username")
    last_time=request.session.get("last_visit_time")


    return render(request,'index.html',locals())

按下submit就返回index_session对应的函数视图中了(重定向)

?

?注意:在登陆成功后,数据库会存储一条记录,不同浏览器访问一次就会产生另一条不同的记录

?还有就是注销操作了(就是清除缓存数据,有两种方式):

def logout(request):
    # del request.session['is_login'] #清除不想要的数据
    #清除数据
    request.session.flush()

    return redirect('/login_session/')

点注销后就直接返回登陆页面了,数据库存的当前的浏览器的session的数据记录也被清除了

。。。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 11:52:05  更:2022-10-31 11:55:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 20:52:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码