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

新余市网站建设_网站建设公司_jQuery_seo优化

瑞安建设公司网站,网站开发下载功能如何实现,濮阳网站推广,微信网站怎么做的好Django进阶篇 一、Django学习之模板二、Django学习之中间件默认中间件自定义中间件 三、Django学习之ORM定义模型类生成数据库表操作数据库添加查询修改删除 一、Django学习之模板 在 Django 中#xff0c;模板#xff08;Template#xff09;是用于生成动态 HTML#xff… Django进阶篇 一、Django学习之模板二、Django学习之中间件默认中间件自定义中间件 三、Django学习之ORM定义模型类生成数据库表操作数据库添加查询修改删除 一、Django学习之模板 在 Django 中模板Template是用于生成动态 HTML或其他格式的文档的文件它允许你将数据与 HTML 结构分离从而实现更好的代码组织和可维护性。 要在django框架中使用模板引擎把视图中的数据更好的展示给客户端需要完成3个步骤 在项目配置文件中指定保存模板文件的模板目录。一般模板目录都是设置在项目根目录或者主应用目录下。在视图中基于django提供的渲染函数绑定模板文件和需要展示的数据变量在模板目录下创建对应的模板文件并根据模板引擎内置的模板语法填写输出视图传递过来的数据。 配置模板目录在当前项目根目录下创建了模板目录templates. 然后在settings.py, 模板相关配置找到TEMPLATES配置项填写DIRS设置模板目录。 TEMPLATES [{BACKEND: django.template.backends.django.DjangoTemplates,DIRS: [os.path.join(BASE_DIR,templates)],APP_DIRS: True,OPTIONS: {context_processors: [django.template.context_processors.debug,django.template.context_processors.request,django.contrib.auth.context_processors.auth,django.contrib.messages.context_processors.messages,],},}, ]模板文件模板文件是包含 HTML 结构和嵌入模板标签的文件。这些模板标签被 Django 解释器识别并用于插入动态内容和逻辑。通常模板文件以 .html 扩展名保存但也可以使用其他扩展名。 模板语言Django 使用自己的模板语言其中包含了一系列模板标签和过滤器用于处理数据、控制流程和生成动态内容。模板语言允许你在模板中插入变量、执行条件判断和循环等操作。 加载模板在视图函数中你可以使用 render() 函数来加载和渲染模板。这个函数接受一个请求对象、模板文件的路径和一个上下文字典作为参数然后将模板渲染为 HTML并返回一个包含渲染结果的 HttpResponse 对象。 from django.shortcuts import renderdef my_view(request):data {name: John}return render(request, my_template.html, contextdata) 模板标签模板标签是以 {% … %} 包围的代码块用于在模板中执行逻辑控制和循环操作。常见的模板标签包括 {% for … %} … {% endfor %}用于循环遍历列表或查询结果。 {% if … %} … {% elif … %} … {% else %} … {% endif %}用于条件判断。 {% block … %} … {% endblock %}用于定义和重写块内容。 {% include … %}用于在模板中包含其他模板。 模板变量模板变量是以 {{ … }} 包围的代码块用于插入动态数据到模板中。你可以在模板中使用上下文中的变量如 {{ name }}以显示用户的名称。 模板过滤器模板过滤器是可用于修改变量的方法。你可以在变量后面使用管道符 | 来应用过滤器。例如{{ value|filter_name }}。Django 提供了许多内置过滤器如 date、truncatechars、lower 等。 模板继承Django 允许你创建模板的基础布局并在子模板中继承和扩展它。这可以通过 {% extends … %} 和 {% block … %} 标签来实现。模板继承使你可以重用通用布局并在不同页面中插入不同的内容。 模板标记除了模板标签和变量外你还可以在模板中使用模板标记Template Tags这是自定义的模板标签和过滤器。你可以编写自定义模板标记来执行复杂的逻辑操作或呈现特定的内容。 创建文件夹 templatetags view.py 同级目录必须是这个名称 templatetags目录下创建分别创建__init__.py 和 custom_filter.py可以自定义 在custom_filter.py 写入如下模板 from django import templateregister template.Library()# 我这里以自定义电话过滤器举例 register.filter def phone_num_filter(value):# 18720359678 187 **** 9678return f{value[:3]} **** {value[7:]}编写模板文件 开头导入 {% load custom_filter %} {% load custom_filter %} !DOCTYPE html html langen headmeta charsetUTF-8title电话薄/title /head body table border0 aligncenter width300px;trth姓名/thth性别/thth联系方式/th/tr{% for p in person_list%}trtd{{ p.name }}/tdtd{{ p.phone_num | phone_num_filter }}/tdtd{{ p.sex }}/td/tr{% endfor%}/table /body /html二、Django学习之中间件 Django 中的中间件是一种机制用于在请求和响应之间执行额外的处理操作。中间件可以在 Django 处理请求的不同阶段介入允许你对请求和响应进行修改、记录、验证等操作。 默认中间件 MIDDLEWARE [django.middleware.security.SecurityMiddleware, django.contrib.sessions.middleware.SessionMiddleware,django.middleware.common.CommonMiddleware,django.middleware.csrf.CsrfViewMiddleware,django.contrib.auth.middleware.AuthenticationMiddleware,django.contrib.messages.middleware.MessageMiddleware,django.middleware.clickjacking.XFrameOptionsMiddleware, ]django.middleware.security.SecurityMiddleware 这个中间件负责提供一些与安全相关的功能例如设置HTTP头部中的安全策略、强制使用HTTPS等。django.contrib.sessions.middleware.SessionMiddleware 这个中间件处理会话数据。它为每个请求提供了一个会话对象可以用于在请求之间存储和检索数据。django.middleware.common.CommonMiddleware 这个中间件提供了一些常见的Web开发功能如URL重写、缓存控制等。django.middleware.csrf.CsrfViewMiddleware 这个中间件用于处理跨站请求伪造CSRF保护。它在提交表单数据时验证CSRF令牌以防止恶意站点利用用户的身份执行恶意操作。django.contrib.auth.middleware.AuthenticationMiddleware 这个中间件处理用户身份验证。它在请求过程中检查用户是否已通过身份验证并将用户对象添加到请求的上下文中。django.contrib.messages.middleware.MessageMiddleware 这个中间件处理闪存消息。闪存消息是一种在请求之间传递的临时消息通常用于显示一次性的成功消息、错误消息或其他通知。django.middleware.clickjacking.XFrameOptionsMiddleware 这个中间件提供了点击劫持clickjacking保护。它通过设置X-Frame-Options响应头来防止将网站嵌入到其他网页的iframe中从而防止点击劫持攻击。 自定义中间件 中间件可以定义的四个方法分别是 process_request(self, request) process_view(self, request, view_func, view_args, view_kwargs) process_exception(self, request, exception) process_response(self, request, response)创建中间件文件在Django根目录创建一个新的文件夹middlewares然后在文件夹中创建一个新的Python文件导入MiddlewareMixin类在中间件导入django.utils.deprecation.MiddlewareMinxin类定义中间件类创建一个新的类继承自MiddlewareMixin类并实现对应方法。 ● def process_request(self, request): 在每个请求处理之前调用可以在这里执行一些预处理操作。 ● def process_response(self, request, response)在每个请求处理完成后调用可以在这里执行一些后处理操作并返回响应对象。配置中间件顺序打开项目的setting.py文件找到MIDDLEWARE列表将自定义中间件的完整路径添加到列表中并根据需要调整中间件的顺序。配置完成保存文件重启Django开发服务器。 三、Django学习之ORM Django 的 ORMObject-Relational Mapping是一个强大的工具用于将 Python 对象映射到数据库表允许你使用 Python 代码来执行数据库操作而不必直接编写 SQL 查询语句。 定义模型类 在 Django 中数据库表的结构和字段都是通过 Python 类来定义的这些 Python 类通常称为模型类Model。 通过继承 django.db.models.Model 类来创建模型类并在类中定义表的字段字段的类型以及其他选项。 需求通过模型类生成一个用户表。 字段有账号、密码、状态、电话、邮箱、创建时间、性别。 from django.db import models# Create your models here.class User(models.Model):STATUS_CHOICES ((0, 正常),(1, 封号))GENDER_CHOICES ((0, 女),(1, 男))username models.CharField(max_length30, nullTrue)password models.CharField(max_length30, nullTrue)status models.CharField(max_length1, choicesSTATUS_CHOICES, default0)gender models.CharField(max_length1, choicesGENDER_CHOICES, default0)phone models.CharField(max_length11)email models.EmailField()created_time models.DateTimeField(auto_nowTrue)class Meta:db_table django_user 生成数据库表 一旦定义了模型类你可以使用 Django 的 makemigrations 和 migrate 命令来创建和更新数据库表。 python manage.py makemigrations python manage.py migrate操作数据库 一旦模型类和数据库表创建好你可以使用模型类来进行数据库操作如插入、查询、更新和删除记录。 创建book的模型类数据迁移生成数据表。 from django.db import modelsclass Book(models.Model):id models.AutoField(primary_keyTrue, verbose_namebook_id)title models.CharField(max_length32, verbose_name书名)author models.CharField(max_length10, verbose_name作者, nullTrue)state models.BooleanField(verbose_name状态)published_date models.DateField(verbose_name出版时间)price models.DecimalField(max_digits8, decimal_places2, verbose_name价格)publishers models.CharField(max_length32, verbose_name出版商)class Meta:db_table django_bookpython manage.py makemigrations python manage.py migrate 这里利用Django中单元测试来说明生成的数据都是测试数据不会写入数据库。 在manage.py 文件终端下 运行 python manage.py test app.tests 添加 # -*- coding: utf-8 -*- from django.test import TestCase from .models import Bookclass BookTestcase(TestCase):def setUp(self) - None:# 添加书籍# 方式一book_obj1 Book.objects.create(title雪山大地,author杨志军,state1,published_date2023-02-01,price78,publishers作家出版社)# 方式二book_obj2 Book(title寻觅意义,author王德峰,state1,published_date2022-10-01,price49.80,publishers山东文艺出版社)book_obj2.save()def test_book_query(self):book_result1 Book.objects.filter(title雪山大地)self.assertEqual(杨志军, book_result1.first().author)book_result2 Book.objects.filter(title寻觅意义)self.assertEqual(王德峰, book_result2.first().author) 查询 # -*- coding: utf-8 -*- from django.test import TestCase from .models import Bookclass BookTestcase(TestCase):def setUp(self) - None:# 添加书籍book_data_info [{title: 寻觅意义,author: 王德峰,state: 1,published_date: 2022-10-01,price: 49.80,publishers: 山东文艺出版社},{title: 国画,author: 王跃文,state: 1,published_date: 2023-06-01,price: 69.80,publishers: 湖南文艺出版社},{title: 鳄鱼,author: 莫言,state: 1,published_date: 2023-06-01,price: 99.80,publishers: 浙江文艺出版社},{title: 长安的荔枝,author: 马伯庸,state: 1,published_date: 2022-10-01,price: 66.66,publishers: 湖南文艺出版社},]# 通过解包的方式传入for book_data in book_data_info:Book.objects.create(**book_data)def test_book_query(self):# 基本查询book_result1 Book.objects.filter(title长安的荔枝)self.assertEqual(马伯庸, book_result1.first().author)book_result2 Book.objects.filter(title寻觅意义)self.assertEqual(王德峰, book_result2.first().author)def test_book_fuzzy_query(self):# 下划线模糊查询# 查询价格大于50的书的名称fuzzy_query_obj1 Book.objects.filter(price__gt50)book_list []for f in fuzzy_query_obj1.values():book_list.append(f.get(title))# 验证超过50的数为3本self.assertEqual(3, len(book_list))# 查询湖南开头的出版社的数量验证为2fuzzy_query_obj2 Book.objects.filter(publishers__startswith湖南)self.assertEqual(2, fuzzy_query_obj2.count()) 修改 # -*- coding: utf-8 -*- from django.test import TestCase from .models import Bookclass BookTestcase(TestCase):def setUp(self) - None:# 添加书籍book_data_info [{title: 寻觅意义,author: 王德峰,state: 1,published_date: 2022-10-01,price: 49.80,publishers: 山东文艺出版社},{title: 国画,author: 王跃文,state: 1,published_date: 2023-06-01,price: 69.80,publishers: 湖南文艺出版社},{title: 鳄鱼,author: 莫言,state: 1,published_date: 2023-06-01,price: 99.80,publishers: 浙江文艺出版社},{title: 长安的荔枝,author: 马伯庸,state: 1,published_date: 2022-10-01,price: 66.66,publishers: 湖南文艺出版社},]# 通过解包的方式传入for book_data in book_data_info:Book.objects.create(**book_data)def test_book_update(self):# 更新# 将鳄鱼这边书的出版时间改为2023-08-01update_time 2023-08-01Book.objects.filter(title鳄鱼).update(published_dateupdate_time)# 查询是否更新成功book_publisher_date Book.objects.filter(title鳄鱼).first().published_dateself.assertEqual(update_time, str(book_publisher_date)) 删除 # -*- coding: utf-8 -*- from django.test import TestCase from .models import Bookclass BookTestcase(TestCase):def setUp(self) - None:# 添加书籍book_data_info [{title: 寻觅意义,author: 王德峰,state: 1,published_date: 2022-10-01,price: 49.80,publishers: 山东文艺出版社},{title: 国画,author: 王跃文,state: 1,published_date: 2023-06-01,price: 69.80,publishers: 湖南文艺出版社},{title: 鳄鱼,author: 莫言,state: 1,published_date: 2023-06-01,price: 99.80,publishers: 浙江文艺出版社},{title: 长安的荔枝,author: 马伯庸,state: 1,published_date: 2022-10-01,price: 66.66,publishers: 湖南文艺出版社},]# 通过解包的方式传入for book_data in book_data_info:Book.objects.create(**book_data)def test_book_delete(self):# 删除Book.objects.filter(title长安的荔枝).delete()# 查询count Book.objects.filter(title长安的荔枝).count()self.assertEqual(0, count)
http://www.lebaoying.cn/news/58264.html

相关文章:

  • 郑州营销型网站建设搜索引擎内部优化
  • 网站内容建设的原则是什么样的网站建设服务套餐
  • ionic 做网站二维码怎么做网站
  • 好的网站建站公司百度代运营
  • 怎么做网站调研什么叫子网站
  • 心理医院网站优化服务商快速网站空间
  • 思帽西宁网站建设后端和前端哪个是青春饭
  • 如何建立虚拟架构网站免费seo视频教程
  • 做汇算清缴在哪个网站下自适应网站系统
  • 北京住房和城乡建设厅网站首页百度信息流优化
  • 网站的功能模块网站做推广需要多少钱
  • 哪个网站做推销产品参考文献 教学网站建设
  • 江西网站开发联系方式电商网站的建设背景图片
  • 网站建设个人信息英文翻译买了域名后做网站该怎么弄
  • 云端建站快车网站建设6000元
  • 做一个宣传网站要多少钱发帖软件
  • 建站宝盒 源码网站建设和网站设计有什么区别
  • 项目管理的主要内容包括哪些莆田seo推广公司
  • 东莞建英文网站的公司dw网页制做教程
  • 中企动力做的家具行业网站无网站营销
  • 工程建设公司网站美食单页设计
  • 网站备案被退回网站的设计特点有哪些
  • 网站添加 百度商桥发表文章静态网页模板
  • 浦东新区网站设计雄安做网站要多少钱
  • 企业管理网站系统一点优化
  • 知乎关键词优化软件nginx优化wordpress网站速度
  • 沈阳专业做网站方案古县网站建设
  • 电子商务行业网站wordpress 图床 插件
  • p2p理财网站开发要求wordpress做导语
  • 免费的网站代码网站里的副栏目是什么