当前位置: 首页 > news >正文

姑苏区网站建设北京鑫旺路桥建设有限公司网站

姑苏区网站建设,北京鑫旺路桥建设有限公司网站,综合商城网站程序,开发网站需要租服务器admin 后台数据库管理 django 提供了比较完善的后台管理数据库的接口#xff0c;可供开发过程中调用和测试使用 django 会搜集所有已注册的模型类#xff0c;为这些模型类提拱数据管理界面#xff0c;供开发者使用 创建后台管理帐号: [rootvm mysite2]# python3 manage.…admin 后台数据库管理 django 提供了比较完善的后台管理数据库的接口可供开发过程中调用和测试使用 django 会搜集所有已注册的模型类为这些模型类提拱数据管理界面供开发者使用 创建后台管理帐号: [rootvm mysite2]# python3 manage.py createsuperuser /root/mysite2 用户名 (leave blank to use root): tarena 电子邮件地址: 123456qq.com Password:[rootvm mysite2]# mysql -uroot -p123456 -e select * from mysite2.auth_user\G *************************** 1. row ***************************id: 1password: pbkdf2_sha256$150000$yE0lYzKHcN9i$VShFRNWFSWd4qOuZDdnEJIi0j0b3u2XHZMJMuQuPvQlast_login: NULL is_superuser: 1username: tarenafirst_name:last_name:email: 123456qq.comis_staff: 1is_active: 1后台管理的登录地址: http://127.0.0.1:8000/admin/ tarena 123456 Django提供了完善的后台管理功能也是一个完善的用户权限管理模块。登录到后台我们可以管理系统的提供的用户、组、权限等信息。也可以管理用户的模型类呢?例如:Book类。 注册自定义模型类 若要自己定义的模型类也能在 /admin 后台管理界中显示和管理需要将自己的类注册到后台管理界面。添加自己定义模型类的后台管理数据表的,需要用admin.site.register(自定义模型类) 方法进行注册 在应用app中的admin.py中导入models类并注册 [rootvm mysite2]# vim bookstore/admin.py from django.contrib import admin# Register your models here. from .models import Book #导入 admin.site.register(Book) #注册使用预览功能还不是很完善需改造 修改自定义模型类的展现样式 在admin后台管理数据库中对自定义的数据记录都展示为 XXXX object 类型的记录不便于阅读和判断在用户自定义的模型类中可以重写 def __str__(self): 方法解决显示问题,如: 在 自定义模型类中重写 str(self) 方法返回显示文字内容: class Book(models.Model):...def __str__(self):return 书名 self.title[rootvm mysite2]# cat bookstore/models.py from django.db import models# Create your models here. class Book(models.Model):title models.CharField(书名, max_length50, default)price models.DecimalField(定价, max_digits7,decimal_places2, default0.0)# 新增属性/字段 要有默认值market_price models.DecimalField(零售价, max_digits5,decimal_places2,default0.0)pub models.CharField(出版社, max_length50,default)def __str__(self):info 书名: %s, 出版社: %s, 定价: %s % (self.title, self.pub, self.price)return info 模型管理器类 作用: 为后台管理界面添加便于操作的新功能。 说明: 后台管理器类须继承自 django.contrib.admin 里的 ModelAdmin 类 模型管理器的使用方法: 在 应用app/admin.py 里定义模型管理器类 class XXXXManager(admin.ModelAdmin):......绑定注册模型管理器和模型类 admin.site.register(YYYY, XXXXManager) # 绑定YYYY 模型类与管理器类XXXManager示例: # file : bookstore/admin.py from django.contrib import admin from .models import Bookclass BookManager(admin.ModelAdmin):list_display [id, title, price, market_price]admin.site.register(Book, BookManager)进入http://127.0.0.1:8000/admin/bookstore/book/ 查看显示方式和以前有所不同 模型管理器类ModelAdmin中实现的高级管理功能 list_display 去控制哪些字段会显示在Admin 的修改列表页面中。list_display_links 可以控制list_display中的字段是否应该链接到对象的“更改”页面。list_filter 设置激活Admin 修改列表页面右侧栏中的过滤器search_fields 设置启用Admin 更改列表页面上的搜索框。list_editable 设置为模型上的字段名称列表这将允许在更改列表页面上进行编辑。其它参见https://docs.djangoproject.com/en/2.2/ref/contrib/admin/ # file : bookstore/admin.py from django.contrib import admin from .models import Bookclass BookManager(admin.ModelAdmin):list_display [id, title, price, market_price]ist_display_links [id, title, price]list_filter [pub]search_fields [id,title]list_editable [] admin.site.register(Book, BookManager)再谈Meta类 模型类可以通过定义内部类class Meta 来重新定义当前模型类和数据表的一些属性信息一般不建议使用 用法格式如下: class Book(models.Model):title CharField(....)class Meta:1. db_table 数据表名- 该模型所用的数据表的名称。(设置完成后需要立马更新同步数据库)2. verbose_name 单数名- 给模型对象的一个易于理解的名称(单数),用于显示在/admin管理界面中3. verbose_name_plural 复数名- 该对象复数形式的名称(复数),用于显示在/admin管理界面中... class Meta:verbose_name 图书 verbose_name_plural 图书 在后台/admin管理界面中 站点管理之前显示 books现在显示图书 数据表关联关系映射 #新建项目初始化配置 [rootvm mysite5]# mysql -uroot -p123456 -e create database mysite5 default charset utf8; [rootvm ~]# django-admin startproject mysite5 [rootvm ~]# cd mysite5/ [rootvm mysite5]# vim mysite5/settings.pyALLOWED_HOSTS [*,] DATABASES {default : {ENGINE: django.db.backends.mysql,NAME: mysite5,USER: root,PASSWORD: 123456,HOST: 127.0.0.1,PORT: 3306,} }LANGUAGE_CODE zh-HansTIME_ZONE Asia/Shanghai[rootvm mysite5]# python3 manage.py runserver 0.0.0.0:8000常用的表关联方式有三种: 一对一映射如: 一个身份证对应一个人一对多映射如: 一个班级可以有多个学生多对多映射如: 一个学生可以报多个课程一个课程可以有多个学生学习 一对一映射OneToOneField 语法 class A(model.Model):... class B(model.Model):属性 models.OneToOneField(A, on_deletexxx)外键类字段选项特殊字段参数on_delete【必须项】: models.CASCADE 级联删除。 Django模拟SQL约束ON DELETE CASCADE的行为并删除包含ForeignKey的对象。models.PROTECT 抛出ProtectedError 以阻止被引用对象的删除;[等同于mysql默认的RESTRICT]models.SET_NULL 设置ForeignKey null需要指定nullTruemodels.SET_DEFAULT 将ForeignKey设置为其默认值必须设置ForeignKey的默认值。其它参请参考文档 https://docs.djangoproject.com/en/2.2/ref/models/fields/#foreignkey 其余常用的字段选项【非必须项】如: null , unique 等 用法示例 创建作家和作家妻子类 [rootvm mysite5]# python3 manage.py startapp oto [rootvm mysite5]# vim mysite5/settings.py INSTALLED_APPS [ ...oto,[rootvm mysite5]# vim oto/models.pyfrom django.db import modelsclass Author(models.Model):作家模型类# 有一个反向属性wife。下面会提到name models.CharField(作家, max_length50)class Wife(models.Model):作家妻子模型类name models.CharField(妻子, max_length50)author models.OneToOneField(Author,on_deletemodels.CASCADE) # 增加一对一属性 author规范一下写法是关联Author类的小写 #CASCADE 将产生级联删除[rootvm mysite5]# python3 manage.py makemigrations [rootvm mysite5]# python3 manage.py migrate [rootvm mysite5]# mysql -uroot -p123456 -e desc mysite5.oto_author; -------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------------------- | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(50) | NO | | NULL | | -------------------------------------------------------- [rootvm mysite5]# mysql -uroot -p123456 -e desc mysite5.oto_wife; ------------------------------------------------------------ | Field | Type | Null | Key | Default | Extra | ------------------------------------------------------------ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(50) | NO | | NULL | | | author_id | int(11) | NO | UNI | NULL | | ------------------------------------------------------------ 创建一对一的数据记录 使用对象关联或主键关联 [rootvm mysite5]# python3 manage.py shellfrom oto.models import * author1 Author.objects.create(name王老师) wife1 Wife.objects.create(name王夫人, authorauthor1) # 对象关联王老师author2 Author.objects.create(name张老师) # 主键关联的第二种方式 wife1 Wife.objects.create(name张夫人, author_idauthor2.id) author3 Author.objects.create(name小李老师) #创建无关联的数据主表数据可以比从表多select * from oto_author; --------------- | id | name | --------------- | 1 | 王老师 | | 2 | 张老师 | | 3 | 小李老师 | ---------------select * from oto_wife; -------------------------- | id | name | author_id | -------------------------- | 1 | 王夫人 | 1 | | 2 | 张夫人 | 2 | --------------------------#CASCADE 将产生级联删除Author.objects.get(id1).delete() (2, {oto.Wife: 1, oto.Author: 1}) #王夫人随之删除Wife.objects.get(id2).delete() (1, {oto.Wife: 1}) #张老师不受影响 select * from oto_author; ------------------ | id | name | ------------------ | 2 | 张老师 | | 3 | 小李老师 | ------------------ 2 rows in set (0.00 sec) select * from oto_wife; Empty set (0.00 sec)添加数据 wife1 Wife.objects.create(name张夫人, author_idauthor2.id)author1 Author.objects.create(name王老师)wife1 Wife.objects.create(name王夫人, authorauthor1)select * from oto_author; ------------------ | id | name | ------------------ | 2 | 张老师 | | 3 | 小李老师 | | 4 | 王老师 | ------------------ select * from oto_wife; -------------------------- | id | name | author_id | -------------------------- | 3 | 张夫人 | 2 | | 4 | 王夫人 | 4 | -------------------------- 数据查询 正向查询直接通过关联属性查询即可 # 通过 wife 找 author from oto.models import Wife wife Wife.objects.get(name王夫人) print(wife.name, 的老公是, wife.author.name)#王夫人 的老公是 王老师反向查询 通过反向关联属性查询反向关联属性为实例对象.引用类名(小写)如作家的反向引用为作家对象.wife当反向引用不存在时则会触发异常 # 通过 author.wife 关联属性 找 wife,如果没有对应的wife则触发异常 author1 Author.objects.get(name王老师) print(author1.name, 的妻子是, author1.wife.name)author2 Author.objects.get(name小李老师) try:print(author2.name, 的妻子是, author2.wife.name) except:print(author2.name, 还没有妻子)#小李老师 还没有妻子 一对多映射ForeignKey 一对多是表示现实事物间存在的一对多的对应关系。语法当一个A类对象可以关联多个B类对象时 class A(model.Model):...class B(model.Model):属性 models.ForeignKey(一的模型类, on_deletexx)创建项目 [rootvm mysite5]# python3 manage.py startapp otm [rootvm mysite5]# vim mysite5/settings.py INSTALLED_APPS [ ...otm, 创建模型类 [rootvm mysite5]# vim otm/models.py from django.db import modelsclass Publisher(models.Model):# 有一个反向属性book_setname models.CharField(名称, max_length50,uniqueTrue)class Book(models.Model):title models.CharField(书名, max_length50)publisher models.ForeignKey(Publisher, on_deletemodels.CASCADE)[rootvm mysite5]# python3 manage.py makemigrations [rootvm mysite5]# python3 manage.py migratedesc otm_publisher; -------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------------------- | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(50) | NO | UNI | NULL | | --------------------------------------------------------desc otm_book; --------------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | --------------------------------------------------------------- | id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(50) | NO | | NULL | | | publisher_id | int(11) | NO | MUL | NULL | | ---------------------------------------------------------------创建数据 #先创建 一 再创建 多 from otm.models import * pub1 Publisher.objects.create(name清华大学出版社)#用对象关联 Book.objects.create(titlepython, publisherpub1) #用主键关联 Book.objects.create(titleJava, publisher_id1) #高级创建 - 利用 反向属性 pub2 Publisher.objects.create(name北京大学出版社) pub2.book_set.create(title西游记) select * from otm_publisher; --------------------------- | id | name | --------------------------- | 2 | 北京大学出版社 | | 1 | 清华大学出版社 | --------------------------- select * from otm_book; -------------------------------- | id | title | publisher_id | -------------------------------- | 1 | python | 1 | | 2 | Java | 1 | | 3 | 西游记 | 2 | | 4 | 红楼梦 | 2 | | 5 | 三国演义 | 2 | --------------------------------数据查询 通过 Book 查询 Publisher【正向】 通过 publisher 属性查询即可 book.publisher Book.objects.get(titlejava).publisher.name 清华大学出版社abook Book.objects.get(id1) print(abook.title, 的出版社是:, abook.publisher.name)通过 Publisher 查询 对应的所有的 Book 【反向】 Django会在Publisher中增加一个属性来表示对对应的Book们的查询引用 属性:book_set 等价于 objects# 通过出版社查询对应的书 pub1 Publisher.objects.get(name清华大学出版社) books pub1.book_set.all() # 通过book_set 获取pub1对应的多个Book数据对象 #books Book.objects.filter(publisherpub1) # 也可以采用此方式获取 print(清华大学出版社的书有:) for book in books:print(book.title)多对多映射ManyToManyField 多对多表达对象之间多对多复杂关系不用指定on_delete语法在关联的两个类中的任意一个类中,增加: 属性 models.ManyToManyField(MyModel)创建项目 一个作者可以出版多本图书一本图书可以被多名作者同时编写 [rootvm mysite5]# python3 manage.py startapp mtm [rootvm mysite5]# vim mysite5/settings.py INSTALLED_APPS [ ...mtm, 创建模型类 [rootvm mysite5]# vim mtm/models.py class Author(models.Model):name models.CharField(作家, max_length50)class Book(models.Model):title models.CharField(书名, max_length50)authors models.ManyToManyField(Author)[rootvm mysite5]# python3 manage.py makemigrations [rootvm mysite5]# python3 manage.py migrate desc mtm_author; -------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------------------- | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(50) | NO | | NULL | | -------------------------------------------------------- desc mtm_book; -------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------------------- | id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(50) | NO | | NULL | | -------------------------------------------------------- desc mtm_book_authors; -------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------------------- | id | int(11) | NO | PRI | NULL | auto_increment | | book_id | int(11) | NO | MUL | NULL | | | author_id | int(11) | NO | MUL | NULL | | --------------------------------------------------------创建数据 from mtm.models import * # 方案1 先创建 author 再关联 bookauthor1 Author.objects.create(name吕老师) author2 Author.objects.create(name王老师) # 关联图书 book11 author1.book_set.create(titlePython) author2.book_set.add(book11) select * from mtm_author; --------------- | id | name | --------------- | 1 | 吕老师 | | 2 | 王老师 | --------------- 2 rows in set (0.00 sec) select * from mtm_book; ------------ | id | title | ------------ | 1 | Python | ------------ 1 row in set (0.00 sec) select * from mtm_book_authors; ------------------------ | id | book_id | author_id | ------------------------ | 1 | 1 | 1 | | 2 | 1 | 2 | ------------------------方案2 先创建 book 再关联 author book Book.objects.create(titlejava) author3 book.authors.create(name李老师) book.authors.add(author1)数据查询 通过 Book 查询对应的所有的 Author【正向】 from mtm.models import * b1 Book.objects.get(titlejava)authors b1.authors.all()for a in authors: ... print(a.name) ... 王老师author1 Author.objects.get(name吕老师) book.authors.all() - 获取 book 对应的所有的author的信息 book.authors.filter(age__gt80) - 获取book对应的作者中年龄大于80岁的作者的信息通过 Author 查询对应的所有的Book【反向】 Django会生成一个反向属性 book_set 用于表示对对应的book的查询对象相关操作 author1 Author.objects.get(name吕老师)booksauthor1.book_set.all() # author1.book_set.filter() for book in books: ... print(book.title) ... Python表的关联关系总结 一对一属性 models.OneToOneField(A, on_deletexxx)1. 生成表结构2. 添加数据3. 查询数据3.1 正向查询 3.2 反向查询 一对多【使用最多】属性 models.ForeignKey(一的模型类, on_deletexx)1. 生成表结构2. 添加数据多对多【难度最大】属性 models.ManyToManyField(MyModel)添加到djanto管理界面 [rootvm mysite5]# python3 manage.py createsuperuser 用户名 (leave blank to use root): tarena[rootvm mysite5]# vim mtm/admin.py from django.contrib import admin from .models import *# Register your models here. class AuthorManager(admin.ModelAdmin):list_display [id,name]list_display_links [id,name] class BookManager(admin.ModelAdmin):list_display [id,title] admin.site.register(Author,AuthorManager) admin.site.register(Book,BookManager)#__str__重写不重写 django的web界面显示的是object对象没可读写 [rootvm mysite5]# vim mtm/models.py class Author(models.Model):name models.CharField(作家, max_length50)def __str__(self):return self.nameclass Book(models.Model):title models.CharField(书名, max_length50)authors models.ManyToManyField(Author)def __str__(self):return self.title#浏览器访问体验功能管理 cookies 和 session 会话 - 从打开浏览器访问一个网站到关闭浏览器结束此次访问称之为一次会话。HTTP协议是无状态的导致会话状态难以保持。Cookies和Session就是为了保持会话状态而诞生的两个存储技术 #新建项目初始化配置 [rootvm ~]# mysql -uroot -p123456 -e create database mysite6 default charset utf8; [rootvm ~]# django-admin startproject mysite6 [rootvm ~]# cd mysite6/ [rootvm mysite6]# vim mysite6/settings.pyALLOWED_HOSTS [*,] DATABASES {default : {ENGINE: django.db.backends.mysql,NAME: mysite6,USER: root,PASSWORD: 123456,HOST: 127.0.0.1,PORT: 3306,} }LANGUAGE_CODE zh-HansTIME_ZONE Asia/Shanghai[rootvm mysite6]# python3 manage.py runserver 0.0.0.0:8000cookies 查看和操作浏览器端所有的 Cookies 值Chrome 浏览器 可能通过开发者工具的Application Storage Cookies火狐浏览器 可能通过开发者工具的 存储 - Cookiecookies是保存在客户端浏览器上的存储空间cookies 在浏览器上是以键-值对的形式进行存储的键和值都是以ASCII字符串的形存储cookies中的数据是按域存储隔离的不同的域之间无法访问cookies 每次访问此网址时都会携带到服务器端如果cookies过大会降低响应速度cookies 不要存储敏感的信息不安全(存储sessionid,相对安全)Django 设置COOKIE 在Django 设置浏览器的COOKIE 必须通过 HttpResponse 对象来完成 添加、修改COOKIE HttpResponse.set_cookie(key, value, max_ageNone, expiresNone)- key:cookie的名字- value:cookie的值- max_age:cookie存活时间秒为单位- expires:具体过期时间- 当不指定max_age和expires 时,关闭浏览器时此数据失效删除COOKIE - HttpResponse.delete_cookie(key) - 删除指定的key 的Cookie。 如果key 不存在则什么也不发生。获取cookie 通过 request.COOKIES 绑定的字典(dict) 获取客户端的 COOKIES数据 value request.COOKIES.get(cookies名, 默认值) print(cookies名 , value)使用示例 添加cookie [rootvm mysite6]# vim mysite6/urls.py urlpatterns [ ...path(set_cookie,views.set_cookie), ][rootvm mysite6]# vim mysite6/views.py from django.http import HttpResponsedef set_cookie(request):resp HttpResponse(set cookie ok!)resp.set_cookie(username,tarena,60)return resp访问 http://192.168.1.11:8000/set_cookie #开发者工具 查看cookie username的键值对儿 Application Storage Cookieshttp://192.168.1.11:8000#开发者工具 查看响应头 Network set_cookie Response Header Set-Cookie: Set-Cookie: usernametarena; expiresSun, ... GMT; Max-Age60; Path/获取cookie [rootvm mysite6]# vim mysite6/urls.py path(get_cookie,views.get_cookie), [rootvm mysite6]# vim mysite6/views.py ... def get_cookie(request):name request.COOKIES.get(username, no-value)return HttpResponse(cookie value is %s % name)访问 http://192.168.1.11:8000/get_cookie #开发者工具 请求头 Network get_cookie resquest Header 没有cookie已过期刷新http://192.168.1.11:8000/set_cookie 再次访问 http://192.168.1.11:8000/get_cookie 页面显示cookie value is tarenaNetwork get_cookie resquest Header Cookie: 末尾有usernametarena删除cookie [rootvm mysite6]# vim mysite6/urls.py path(del_cookie,views.del_cookie),[rootvm mysite6]# vim mysite6/views.pydef del_cookie(request):resp HttpResponse(del cookie ok!)resp.delete_cookie(username)return resp 访问 http://192.168.1.11:8000/del_cookie Network set_cookie Response Header Set-Cookie: Set-Cookie: username; expiresThu, 01 Jan 1970 00:00:00 GMT; Max-Age0; Path/ #注意 expires有效时间 Max-Age存活时间session session又名会话控制是在服务器上开辟一段空间用于保留浏览器和服务器交互时的重要数据实现方式 - 使用 session 需要在浏览器客户端启动 cookie且用在cookie中存储sessionid - 每个客户端都可以在服务器端有一个独立的Session - 注意不同的请求者之间不会共享这个数据与请求者一一对应cookies 的特点1保存在客户端浏览器2按域隔离3键值对存储4不安全不要保存敏感数据 session的特点1保存在服务器2session的使用需要借助于cookie来存储sessionid3相对安全但是也不要存储敏感数据 虽然session的原理和步骤都比cookie更复杂但是在Django中使用时由于做了相应的处理反而使用更简单。会使用字典就会使用session。Django中配置Session 在 settings.py 文件中向 INSTALLED_APPS 列表中添加 INSTALLED_APPS [# 启用 sessions 应用默认启用django.contrib.sessions, ]向 MIDDLEWARE 列表中添加 MIDDLEWARE [# 启用 Session 中间件默认启用django.contrib.sessions.middleware.SessionMiddleware, ][rootvm mysite6]# python3 manage.py makemigrations [rootvm mysite6]# python3 manage.py migrate show tables; ---------------------------- | Tables_in_mysite6 | ---------------------------- | auth_group | | auth_group_permissions | | auth_permission | | auth_user | | auth_user_groups | | auth_user_user_permissions | | django_admin_log | | django_content_type | | django_migrations | | django_session | ----------------------------desc django_session; ------------------------------------------------------ | Field | Type | Null | Key | Default | Extra | ------------------------------------------------------ | session_key | varchar(40) | NO | PRI | NULL | | | session_data | longtext | NO | | NULL | | | expire_date | datetime(6) | NO | MUL | NULL | | ------------------------------------------------------session的基本操作: session对于象是一个类似于字典的SessionStore类型的对象, 可以用类拟于字典的方式进行操作session 只能够存储能够序列化的数据,如字典列表等。 保存 session 的值到服务器request.session[KEY] VALUE获取session的值VALUE request.session[KEY]VALUE request.session.get(KEY, 缺省值)删除session的值del request.session[KEY]在 settings.py 中有关 session 的设置1. SESSION_COOKIE_AGE- 作用: 指定sessionid在cookies中的保存时长(默认是2周)如下:- SESSION_COOKIE_AGE 60 * 60 * 24 * 7 * 22. SESSION_EXPIRE_AT_BROWSER_CLOSE True设置只要浏览器关闭时,session就失效(默认为False) 当使用session时需要迁移数据库,否则会出现错误python3 manage.py migratesession添加 [rootvm mysite6]# vim mysite6/urls.pypath(set_session,views.set_session),path(get_session,views.get_session),[rootvm mysite6]# vim mysite6/views.py ... def set_session(request):request.session[username] tarenareturn HttpResponse(set session is ok) def get_session(request):username request.session.get(username, no-value)return HttpResponse(user name is %s % username)http://192.168.1.11:8000/set_session #开发者工具 查看cookie username的键值对儿 Application Storage Cookieshttp://192.168.1.11:8000 sessionid: kim2qi8v4lcfy92ax9r7gn6r4c4zkj0v #开发者工具 查看响应头 Set-Cookie: sessionidkim2qi8v4lcfy92ax9r7gn6r4c4zkj0v 这与数据库里存储的session_key是同一个 select * from django_session\G *************************** 1. row ***************************session_key: kim2qi8v4lcfy92ax9r7gn6r4c4zkj0v session_data: YjFkZjBiZmQ4MzFhZDIwZWI0YWZhNDMxOTE5ZDE0Nj... ...http://192.168.1.11:8000/get_session user name is tarenasession删除 [rootvm mysite6]# vim mysite6/urls.pypath(del_session,views.del_session),[rootvm mysite6]# vim mysite6/views.py def del_session(request):if username in request.session:del request.session[username]return HttpResponse(del session is ok) 设置session 时间 [rootvm mysite6]# vim mysite6/settings.py SESSION_COOKIE_AGE 60http://192.168.1.11:8000/set_session 看响应头Max-Age60删除已过期session django 原生session 问题 1django_session表是 单表设计且该表数据量持续增持不会删除包括恶意删除的sessionid客户端手动删掉sessionid重新请求服务器生成新的过期的sessionid数据 2可以每晚执行 python3 manage.py clearsessions可删除已过期的session数据恶意删除的sessionid未过期命令无法删除
http://www.w-s-a.com/news/249741/

相关文章:

  • 聊城九洲建设有限公司网站师大暨大网站建设
  • 烟台网站建设学校潍坊市建设监理协会网站
  • 大良营销网站建设资讯建设厅网站总经济师是干什么的
  • 网站优化推广软件网站制作公司dedecms
  • 在哪一个网站做社保申报百度小程序开发平台
  • 东莞网站建设_东莞网页设计网站色调代号
  • 濮阳住房和城乡建设部网站给别人做ppt的网站
  • 电子商务网站建设规划心得广告投放媒体
  • 淘宝店铺购买价格宝应百度seo
  • 同一虚拟主机 2个网站如果网站设计时
  • 网站维护的协议做网站 需要 域名 空间
  • 高安建站公司济宁哪里做网站最便宜
  • 南宁建站免费模板简单的html网页设计
  • 吉林省建设 安全 网站沐风seo
  • 自己做捕鱼网站能不能挣钱软件开发公司需要什么硬件设备
  • 大连设计网站公司3小说网站开发
  • 建设环保网站查询系统网站建设168
  • 保险网站程序源码wordpress过滤敏感
  • 简述营销型网站推广的方法网站建设报价方案模板
  • 四川林峰脉建设工程有限公司网站为什么建设营销型网站
  • 网站模板搭建已经建网站做外贸
  • 网站建设选哪个wordpress实现微信登录界面
  • 网页设计网站哪个公司好学网站开发要多少钱
  • 商务网站建设ppt做视频分享网站
  • WordPress网站根目录有哪些wordpress用户等级
  • 私人装修接单网站重庆制作企业网站
  • 易企秀网站怎么做轮播图什么是网站版面布局
  • 网站开发先写什么后写什么做网站公司专业
  • 中山网站建设文化外贸公司的网站建设模板
  • 美食网站开发开题报告wordpress第三方支付接口