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

做石材网站步骤建筑工程人才培训网官网

做石材网站步骤,建筑工程人才培训网官网,孙俪做的网站广告,wordpress 显示页码admin后台管理 什么是admin后台管理 django提供了比较完善的后台数据库的接口#xff0c;可供开发过程中调用和测试使用 django会搜集所有已注册的模型类#xff0c;为这些模型类提供数据管理界面#xff0c;供开发使用 admin配置步骤 创建后台管理账号 该账号为管理后…admin后台管理 什么是admin后台管理 django提供了比较完善的后台数据库的接口可供开发过程中调用和测试使用 django会搜集所有已注册的模型类为这些模型类提供数据管理界面供开发使用 admin配置步骤 创建后台管理账号 该账号为管理后台最高权限账号 python3 manage.py createsuperuser 测试登录 启动服务后后台管理的登录地址http://127.0.0.1:8000/admin使用刚才注册的管理员账号登录即可 实验测试admin后台系统 首先创建用户在终端执行 python3 manage.py createsuperuser 命令 (testenv) [rootlocalhost mysite3]# python3 manage.py createsuperuser 用户名 (leave blank to use root): root 电子邮件地址: rootqq.com Password: 123456 Password (again): 123456 密码长度太短。密码必须包含至少 8 个字符。 这个密码太常见了。 密码只包含数字。 Bypass password validation and create user anyway? [y/N]: y # 如果密码短需要手动确定 Superuser created successfully. 启动服务 django 服务 (testenv) [rootlocalhost mysite3]# python3 manage.py runserver 后台管理的登录地址http://127.0.0.1:8000/admin 注册自定义模型类 若要自己定义的模型类也能在admin后台管理系统界面中显示和管理需要将自己的类注册到后台管理界面 注册步骤 实验绑定模型管理器类 在应用app中的 admin.py 中导入注册要管理的模型 models 类如from .models import Book 调用 admin.site.register 方法进行注册如admin.site.register(自定义模型类) 案例 修改自定义模型类的数据样式 admin后台管理数据库中对自定义的数据记录都展示为 XXX object 类型的记录不便于阅读和理解 在用户自定义的模型类中可以重写 def str(self)方法解决显示问题如 实验注册模型类 修改 bookstore 应用下的 admin.py 文件 from django.contrib import admin from .models import Book # 导入模型类# Register your models here. admin.site.register(Book) # 注册模型类 启动服务重新登录 admin 后台管理系统观察界面 点击Books链接查看图书详情页 这里显示的内容是 __str__ 方法封装的字符串所以可以自定义修改 模型管理器类 理解与说明 作用为后台管理界面添加便于操作的新功能 说明后台管理器类须继承自 Django.contrib.admin 里的 ModelAdmin 类 使用方法 在 应用app/admin.py 里定义模型管理器类 绑定注册模型管理器和模型类 案例 类属性说明 list_display去控制哪些字段会显示在admin后台管理的修改列表页面中list_display_links可以控制list_display中的字段是否应该链接到对象的”更改”页面 修改 bookstore 应用下的 admin.py 文件添加模型管理器类 list_filter设置激活admin修改列表页面右侧栏中的过滤器search_fields设置启用admin更改列表页面上的搜索框 from django.contrib import admin from .models import Bookclass BookManager(admin.ModelAdmin):# 列表页显示哪些字段的列list_display [id, title, pub, price]# 控制 list_display 中的字段哪些可以链接到修改页list_display_links [title]# 添加过滤器list_filter [pub]# 添加搜索框[模糊查询]search_fields [title]# 添加可在列表编辑的字段list_editable [price]admin.site.register(Book, BookManager) # 将模型管理器类和模型类进行绑定 启动服务重新登录 admin 后台管理系统观察界面 点击Books进入详情页发现修改内容均已在管理界面生效 Meta类 通过Meta内嵌类定义模型类的属性用法如下 实验修改Meta类属性 修改 bookstore 应用下的 admin.py 文件修改 Book 模型类 from django.db import modelsclass Book(models.Model):title models.CharField(书名, max_length50, default, uniqueTrue)pub models.CharField(出版社, max_length50, default)price models.DecimalField(定价, max_digits7, decimal_places2, default0.0)market_price models.DecimalField(零售价, max_digits7, decimal_places2, default0.0)is_active models.BooleanField(是否活跃, defaultTrue)def __str__(self):return f{self.title}, {self.pub}, {self.price}, {self.market_price}class Meta:db_table bookverbose_name 图书 # 修改单数显示verbose_name_plural verbose_name # 修改复数显示 启动服务重新登录 admin 后台管理系统观察界面 练习 需求对 Author 模型管理类的自定义设置 将 Author 模型类加入后台管理制作一个 AuthorManager 管理器类让后台管理 Authors 列表中显示作者的 ID、姓名、年龄信息用后台管理程序添加三条 Author 记录修改其中一条记录的年龄 – Author删除最后一条添加的记录 – Author 总结 注册自己的模型类修改自定义模型类的显示样式 - 模型管理器类Meta类对模型类的属性修改 关系映射 什么是关系映射 在关系型数据库中通常不会把所有数据都放在同一张表中不易于扩展常见关系映射有 一对一映射 如一个身份证对应一个人 一对多映射 如一个班级可以有多个学生 多对多映射 如一个学生可以报多个课程一个课程可以有多个学生学习 一对一映射 概念与理解 创建模型类 查询数据 正向查询 一对一是表示现实事物间存在的一对一的对应关系 如一个家庭只有一个户主一个男人有一个妻子一个人有一个唯一的指纹信息等 语法OneToOneField(类名, on_deletexxx) 特殊字段选项【必须】 on_delete级联删除 models.CASCADE 级联删除Django模拟 SQL 约束 ON DELETE CASCADE 的行为并删除包含 ForeignKey的对象Models.PROTECT抛出 ProtectedError 以阻止被引用对象的删除等同于 mysql 默认的 RESTRICTSET_NULL 设置 ForeignKey null需要指定 null TrueSET_DEFAULT将 ForeignKey 设置为其默认值必须设置 ForeignKey 的默认值示例 - 创建模型类 – oto/models.py 添加数据 无外键的模型类[Author] author1 Author.objects.create(name王老师) 有外键的模型类[Wife] 方式1wife1 Wife.objects.create(name王夫人, authorauthor1) # 关联王老师对象方式2wife1 Wife.objects.create(name王夫人, author_id1) # 关联王老师对应的主键值 直接通过外键属性查询则称为正向查询 反向查询 没有外键属性的一方可以调用反向属性查询关联的另一方 一对多映射 反向关联属性为实例对象.引用类名(小写)如作家的反向引用为作家对象.wife 当反向引用不存在时则会触发异常 author1 Author.objects.get(name‘王老师’) author1.wife.name 实验一对一模型 创建应用oto (testenv) [rootlocalhost mysite3]# python3 manage.py startapp oto 并在 settings.py 中将 oto 应用进行注册 INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,music,news,sport,bookstore,oto, # 模型注册 ] 修改 oto 应用下的 models.py创建模型类 from django.db import modelsclass Author(models.Model):# wife 反向属性用作反向查询name models.CharField(姓名, max_length11)class Wife(models.Model):name models.CharField(姓名, max_length11)author models.OneToOneField(Author, on_deletemodels.CASCADE) 同步迁移数据库 (testenv) [rootlocalhost mysite3]# python3 manage.py makemigrations (testenv) [rootlocalhost mysite3]# python3 manage.py migrate 进入 MySQL 环境观察 wife 表中的外键自动生成 author_id 外键 (testenv) [rootlocalhost mysite3]# mysql -uroot -p123456 MariaDB [(none)] USE mysite3; MariaDB [mysite3] DESC oto_author; -------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------------------- | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(11) | NO | | NULL | | --------------------------------------------------------MariaDB [mysite3] DESC oto_wife; ------------------------------------------------------------ | Field | Type | Null | Key | Default | Extra | ------------------------------------------------------------ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(11) | NO | | NULL | | | author_id | int(11) | NO | UNI | NULL | | ------------------------------------------------------------ 测试给两张表中添加数据使用 Django Shell 的方式两种方式添加数据 (testenv) [rootlocalhost mysite3]# python3 manage.py shellfrom oto.models import *a1 Author.objects.create(nameben)w1 Wife.objects.create(namebenfuren, authora1) # 类属性赋值a2 Author.objects.create(nameniu)w2 Wife.objects.create(nameniufuren, author_id2) # 数据库字段赋值a2.id # 查看作者id 2 查询正向查询 (testenv) [rootlocalhost mysite3]# python3 manage.py shellfrom oto.models import *wife Wife.objects.get(namebenfuren)wife.name benfurenwife.author.name ben 查询反向查询 (testenv) [rootlocalhost mysite3]# python3 manage.py shellfrom oto.models import *author1 Author.objects.get(nameben)author1.wife.name # 利用反向属性进行数据查询 benfuren 一对一映射关系总结 一对一的模型类创建 一对一的数据创建 一对一的数据查询 正向查询反向查询 概念与理解 一对多是表示现实事物存在的一对多的对应关系 如一个学校有多个班级一个班级有多个学生一本书只能属于一个出版社但是出版社可以出版多本书 一对多需要明确出具体角色在多表上设置外键 创建模型类 语法当一个A类对象可以关联多个B类对象时 ForeignKey必须指定 on_delete 模式 示例 – 创建模型类 - otm/models.py 添加数据 先创建“一”再创建多“多” 示例 from .models import * pub1Publisher.objects.create(name清华大学出版社) Book.objects.create(titleC, publisherpub1) Book.objects.create(titleJava, publisher_id1) 查询数据 正向查询 [通过Book查询Publisher] 反向查询 [通过Publisher查询对应的所有的Book] 需要用到 反向属性 实验一对多模型 创建应用otm (testenv) [rootlocalhost mysite3]# python3 manage.py startapp otm 并在 settings.py 中将 otm 应用进行注册 INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,music,news,sport,bookstore,oto,otm, # 模型注册 ] 修改 otm 应用下的 models.py创建模型类 from django.db import modelsclass Publisher(models.Model):#出版社 [一]name models.CharField(出版社名称, max_length50)class Book(models.Model):#书名 [多]title models.CharField(书名, max_length11)publisher models.ForeignKey(Publisher, on_deletemodels.CASCADE) # 外键 同步迁移数据库 (testenv) [rootlocalhost mysite3]# python3 manage.py makemigrations (testenv) [rootlocalhost mysite3]# python3 manage.py migrate 进入 MySQL 环境观察 Book 表中的外键 (testenv) [rootlocalhost mysite3]# mysql -uroot -p123456 MariaDB [(none)] USE mysite3; MariaDB [mysite3] DESC otm_book; --------------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | --------------------------------------------------------------- | id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(11) | NO | | NULL | | | publisher_id | int(11) | NO | MUL | NULL | | ---------------------------------------------------------------MariaDB [mysite3] DESC otm_publisher; -------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------------------- | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(50) | NO | | NULL | | --------------------------------------------------------测试给两张表中添加数据使用 Django Shell 的方式先创建一再创建多 (testenv) [rootlocalhost mysite3]# python3 manage.py shellfrom otm.models import *p1 Publisher.objects.create(name中信出版社)p1 Publisher: Publisher object (1)b1 Book.objects.create(titlepython1, publisherp1) # 类属性赋值b2 Book.objects.create(titlepython2, publisher_id1) # 数据库字段赋值 查询正向查询 (testenv) [rootlocalhost mysite3]# python3 manage.py shellfrom otm.models import *b1 Book.objects.get(id1)b1 Book: Book object (1)print(b1.title, b1.publisher.name) python1 中信出版社 查询反向查询 from otm.models import *pub1 Publisher.objects.get(name中信出版社)pub1 Publisher: Publisher object (1)books pub1.book_set.all()books QuerySet [Book: Book object (1), Book: Book object (2)]for book in books: ... print(book.title) ... python1 python2 多对多映射 概念与理解 多对多表达对象之间多对多的复杂关系如每个都有不同的学校(小学初中高中……)每个学校都有不同的学生…… Mysql 中创建多对多需要依赖第三张表来实现 Django 中无需手动创建第三张表这个操作Django自动完成 语法在关联的两个类中的任意一个类中增加 属性 models.ManyToManyField(MyModel) 创建模型类 用法示例 一个作者可以出版多本图书 一本图书可以由多个作者共同编写 用法示例—创建模型类 添加数据 用法示例—创建数据 数据查询 正向查询有多对多属性的对象查另一方 通过 Book 查询对应的所有的 Author 此时多对多属性相当于 objects 反向查询 通过 Author查询对应的所有的 Book 利用反向属性 book_set 实验多对多模型 创建应用mtm (testenv) [rootlocalhost mysite3]# python3 manage.py startapp otm 并在 settings.py 中将 mtm 应用进行注册 INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,music,news,sport,bookstore,oto,otm,mtm, # 模型注册 ] 修改 mtm 应用下的 models.py创建模型类 from django.db import modelsclass Author(models.Model):name models.CharField(姓名, max_length11)class Book(models.Model):title models.CharField(书名, max_length11)authors models.ManyToManyField(Author) 同步迁移数据库 (testenv) [rootlocalhost mysite3]# python3 manage.py makemigrations (testenv) [rootlocalhost mysite3]# python3 manage.py migrate 进入 MySQL 环境观察 Django 帮助我们生成的中间表 (testenv) [rootlocalhost mysite3]# mysql -uroot -p123456 MariaDB [(none)] USE mysite3; MariaDB [mysite3] DESC mtm_author; -------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------------------- | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(11) | NO | | NULL | | --------------------------------------------------------MariaDB [mysite3] DESC mtm_book; -------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------------------- | id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(11) | NO | | NULL | | --------------------------------------------------------MariaDB [mysite3] 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 | | -------------------------------------------------------- 测试给两张表中添加数据使用 Django Shell 的方式 (testenv) [rootlocalhost mysite3]# python3 manage.py shellfrom mtm.models import * # 方案1先创建 author再关联 bookauthor1 Author.objects.create(nameteacher ben)author2 Author.objects.create(nameteacher niu)book1 author1.book_set.create(titlePython)author2.book_set.add(book1) # 方案2先创建 book再关联 authorbook2 Book.objects.create(titleDjango) # 凯哥和niu老师都参与了Django的编写author3 book2.authors.create(namekaige)book2.authors.add(author2) 查询正向查询通过 Book 查询对应的所有的 Author (testenv) [rootlocalhost mysite3]# python3 manage.py shellfrom mtm.models import *book1 Book.objects.get(titleDjango)book1.title Djangousers book1.authors.all()for user in users: ... print(user.name) ... teacher niu kaige 查询反向查询 (testenv) [rootlocalhost mysite3]# python3 manage.py shellfrom mtm.models import *author2 Author.objects.get(nameteacher niu)books author2.book_set.all()for book in books: ... print(book.title) ... Python Django Cookies 和 Session 会话概念 从打开浏览器访问一个网站到关闭浏览器结束此次访问称之为一次会话HTTP 协议是无状态的导致会话状态难以保持试想一下如果不保持会话状态再电商网站购物的场景体验Cookies和Session就是为了保持会话状态而诞生的两个存储技术 Cookies Cookies 定义 cookies 是保存在客户端浏览器上的存储空间 Cookie 使用场景 在讲cookie前先了解下它的使用场景 使用Chrome浏览器打开京东网站且未登录情况下我的购物车未添加商品所以商品数量是0 挑选3个商品加入购物车此时购物车数量显示3 关闭 Chrome 浏览器再次打开京东首页发现购物车数量还是 3 如果此时换成 Firefox 浏览器打开京东首页发现购物车里的商品数量是 0 为什么 Chrome 浏览器未登录关闭浏览器后再次打开购物车商品数量没变换个浏览器购物车商品数量就不是 3 了这个场景就说明了 2 点 商品信息保留在本地了未保留在浏览器缓存不同的浏览器cookie的保留路径不一样并且各个浏览器的cookie信息互不影响 Cookies 特点 Django 中的 cookie cookie 在浏览器上是以键值对的形式进行存储的键和值都是以 ASCII 字符串的形式存储不能是中文字符串存储的数据带有声明周期cookie 中的数据是按域存储隔离的不同的域之间无法访问cookie 的内部的数据会在每次访问此网站时携带到服务器端如果 cookie 过大会降低响应速度 实验Cookies 操作 添加 cookies修改 mysite3 下的 views.py 文件添加指定视图函数 from django.shortcuts import render from django.http import HttpResponsedef test_static(request):return render(request, test_static.html)def set_cookies(request): # 添加测试cookie的函数resp HttpResponse(set cookies is ok)resp.set_cookie(uuname, nfx,500)return resp 修改主路由 urls.py from django.contrib import admin from django.urls import path, include from . import viewsurlpatterns [path(admin/, admin.site.urls),# ......path(set_cookies, views.set_cookies), ] 启动服务测试 http://127.0.0.1:8000/set_cookies观察网络请求中的 cookies 变化 获取 cookies修改 mysite3 下的 views.py 文件添加指定视图函数 from django.shortcuts import render from django.http import HttpResponsedef test_static(request):return render(request, test_static.html)def set_cookies(request):resp HttpResponse(set cookies is ok)resp.set_cookie(uuname, nfx,500)return respdef get_cookies(request): # 添加获取cookie的函数value request.COOKIES.get(uuname)return HttpResponse(fvalue is {value}) 修改主路由 urls.py from django.contrib import admin from django.urls import path, include from . import viewsurlpatterns [path(admin/, admin.site.urls),# ......path(set_cookies, views.set_cookies),path(get_cookies, views.get_cookies), # 获取cookie的url ] 启动服务测试 http://127.0.0.1:8000/get_cookies观察网络请求中的 cookies 变化 Session Session概念 session 是在服务器上开辟了一段用于保留浏览器和服务器交互时的重要数据 实现方式 使用session需要在浏览器客户端启动 cookie且在cookie中存储 sessionid每个客户端都可以在服务端有一个独立的 session注意不同的请求者之间不会共享这个数据与请求者一一对应 在 Django 中的配置 向 INSTALLED_APPS 列表中添加 向 MIDDLEWARE 列表中添加 session的使用 session 对象是一个类似与字典的 SessionStore 类型的对象可以用类拟于字典的方式进行操作 session 能够存储如字符串整型字典列表等数据 保存 session 的值到服务器 request.session[KEY] VALUE 获取 session 的值 value request.session[KEY]value request.session.get(KEY, 默认值) 删除 session del request.session[KEY] 实验Session 操作 添加以及获取 session修改 mysite3 下的 views.py 文件添加指定视图函数 def set_session(request):request.session[uname] nfxreturn HttpResponse(set session is ok)def get_session(request):value request.session[uname]return HttpResponse(fsession value is {value}) 修改主路由 urls.py from django.contrib import admin from django.urls import path, include from . import viewsurlpatterns [path(admin/, admin.site.urls),# ......path(set_cookies, views.set_cookies),path(get_cookies, views.get_cookies),path(set_session, views.set_session), # 设置sessionpath(get_session, views.get_session), # 获取session ] 启动服务先测试 set 设置 session然后再测试 get 获取 session settings.py 中相关配置项以及注意事项 SESSION_COOKIE_AGE 作用指定sessionid在cookies中的保存时长 (默认时2周)如下例如SESSION_COOKIE_AGE 60 * 60 * 24 * 7 * 2 SESSION_EXPIRE_AT_BROWSER_CLOSE True 设置只要浏览器关闭时session就失效(默认是False) 注意Django中的session数据存储在数据库中所以使用session前需要确保已经执行过migrate操作将存储session表创建出来 django_session 表是单表设计且该表数据量持续增加 可以定期执行 python3 manage.py clearsessions该命令可删除已过期的 session 数据 Cookie和Session的对比
http://www.zqtcl.cn/news/558191/

相关文章:

  • 河北做网站公司网站建设团队扬州
  • 114物流网站怎么做免费注册163免费邮箱申请
  • 做网站要以单位手机发博客wordpress
  • 莆田网站建设莆田seo管理系统培训
  • 有一个网站自己做链接获取朋友位置网站关键词数量减少
  • 毕设网站建设论文小程序开发模板
  • 广州网页模板建站电商平台谈双11变冷
  • 用.cc做网站官网可以吗2003系统网站建设
  • 创意网站推荐新手网站
  • 网站编程好学吗免费下载app并安装
  • 广州专业网站制作设计网站建设分几种
  • 有没有专业做艺术品的网站长沙人才市场招聘信息
  • 河池做网站通过邮箱查注册网站
  • 金融互助网站开发网上免费设计效果图
  • 网站开发 例子施工企业质量管理体系应按照我国
  • 义乌建设网站网络营销推广有哪些方法
  • 宿迁建设局网站a类证查询怎么自己搭建梯子
  • 成都网站品牌设计策划网络推广如何收费
  • html5 js全屏滑动网站源码wordpress 插件 破解
  • 做电影网站怎么批量去水印微信用什么小程序可以提取文字
  • 网站开发费用周期域名网站建设方案书模板
  • 织梦网站问题关于政务网站建设工作情况的总结
  • wordpress 拿站网站搭建后如何使用
  • 网站设计应遵循的原则wordpress免费空间
  • 建设网站的特色企业内部培训app软件
  • jsp网站缓存在哪wordpress设置静态页面
  • 百度做网站电话多少东台网页定制
  • 暖通设计网站推荐百度在西安的公司叫什么
  • 天津响应式网站设计网站建设的任务
  • 多语言网站 自助江门建设局网站