一、inclusion_tag

1、作用

用于生成HTML片段,是数据由参数传入而变成动态

2、使用

# 1.app下新建一个模块,templatetags
# 2.创建一个py文件(mytag.py)
# 3.导入Library模块,实例化
from django.template import Library
register=Library() # -----> register名字一定不能变
# 4.写装饰器(标签,过滤器,inclusion_tag)
@inclusion_tag('模板路径',name='重命名')
def my_in(): # 不写,写多个,不写不传,写多个,按空格来传参
# 一堆逻辑处理,查数据库
ret=Book.object.all()
return {''books':ret}
# 在模板中:
可以用books这个变量,渲染页面
# 5.应用:
-在另一个模板中:
-{%load mytag.py%}
-{% my_in %}

二、defer与only

1、定义

defer  ----> 除了指定字段之外
only ----> 只查询几个字段

2、使用

ret=Book.object.all().only('name')
# 等价于,id始终都会查
ret=Book.object.all().only('id','name')

3、注意点

ret=models.Author.objects.only('nid')
for i in ret:
# 查询的name不在的ret中,会再次查询数据库,造成数据库压力大
print(i.name)

三、事务

1、原子性操作

2、语法

from django.db import transition
with transition.atomic():
sql1
sql2

四、choice

1、定义

模型表中某个字段,可以指定choice,用在选择不经常变的情况,经常变,尽量用数据库

2、使用

# db_constraint 是否在数据库中创建外键约束,默认为True
user_type=models.ForeignKey(to='Info', to_field='id',db_constraint=False)
#取出对应的汉字
# author对象.user_type.name
mychoice=((1,'男'),(2,'女'),(3,'其他'))
# dd = models.ForeignKey(to='Info', to_field='id')
#取出对应的汉字
dd = models.ForeignKey(choices=mychoice)

五、多对多创建第三张表

1、多对多的操作

https://www.cnblogs.com/linagcheng/p/9953252.html

2、三种方法创建第三张表

(1)手动创建第三张表(不创建关联关系)

# 手动创建第三张表(不创建关联关系)
class Book(models.Model):
# 默认会创建id
name = models.CharField(max_length=32)
class Author(models.Model):
name = models.CharField(max_length=32)
class Book2Author(models.Model):
id = models.AutoField(primary_key=True)
book=models.ForeignKey(to='Book',to_field='id')
author=models.ForeignKey(to='Author',to_field='id')
# 不管是插入和查询,删除,都很麻烦(一般不用)

(2)自动创建第三张表

# 自动创建第三张表
查询,插入,删除,都很方便
缺点:字段是固定的,第三张表如果要添加字段,实现不了

(3)手动创建第三张表,建立关联关系

class Book(models.Model):
# 默认会创建id
name = models.CharField(max_length=32)
# 中介模型,手动指定第三张中间表是
authors=models.ManyToManyField(to='Author',through='Book2Author',through_fields=('book','author'))
class Author(models.Model):
name = models.CharField(max_length=32)
class Book2Author(models.Model):
id = models.AutoField(primary_key=True)
book=models.ForeignKey(to='Book',to_field='id')
author=models.ForeignKey(to='Author',to_field='id') # through:来指定我的第三张表是哪个
# through_fields:('book','author'),第一个值是:从中间表找到设置关联字段的表,通过哪个字段,第一个位置就写它
# 终极总结:防止混了:关联字段就是表名小写,第一个值:就是当前表的表名小写
# 查询,新增,删除,都很方便
# 第三张表,可以添加别的字段

Django框架(十一)-- 补充:inclusion_tag、defer、only、choice、事务、创建多对多的第三张表、mvc和mtv模式的更多相关文章

  1. Django框架(十二)—— 补充:inclusion_tag、defer、only、choice、事务、创建多对多的第三张表

    目录 补充:inclusion_tag.defer.only.choice.事务.创建多对多的第三张表 一.inclusion_tag 1.作用 2.使用 二.defer与only 1.定义 2.使用 ...

  2. $Django 多对多-自定义第三张表 基于双下划线的跨表查询(补充)

    自定义第三张表的好处:可以定义多个字段, 缺点:查询不方便(有方法解决) 1.第三张表设置外键,联合唯一(查询不方便) class Books(models.Model): name=models.C ...

  3. django orm 多对多自定义第三张表

    # -*- coding: utf-8 -*-# Generated by Django 1.11.11 on 2018-09-02 08:07from __future__ import unico ...

  4. django 多对多自定义第三张表时的注意事项

    杂交(自定义第三张表+ManyToManyField) # modles.py class Boy(models.Model): name = models.CharField(max_length= ...

  5. Django学习——图书管理系统图书修改、orm常用和非常用字段(了解)、 orm字段参数(了解)、字段关系(了解)、手动创建第三张表、Meta元信息、原生SQL、Django与ajax(入门)

    1 图书管理系统图书修改 1.1 views 修改图书获取id的两种方案 1 <input type="hidden" name="id" value=& ...

  6. Django:常用字段、手动自动第三张表单、元信息

    一.常用字段和非常用字段 二.手动,自动创建第三张表 三.元信息 四.defer和only 一.常用字段和非常用字段 -常用字段 AutoField int自增列,必须填入参数 primary_key ...

  7. Django之多对多表之through第三张表之InlineModelAdmin后台内嵌

    话不多说,来看表结构 这里有两个表,一个是阶段表,一个是老师表,一个老师可以带多个阶段,一个阶段也可以由多个老师带,所以是多对多关系 # 阶段表 class Stage(models.Model): ...

  8. Django之modles 多对多创建第三张表

    一.第一种:纯自动创建第三张表 纯自动 class Book(models.Model): title = models.CharField(max_length=32) price = models ...

  9. Django框架(十一):模板介绍、模板语言、模板继承、HTML转义

    1. 模板介绍 1.1 模板的功能 产生html,控制页面上展示的内容.模板文件不仅仅是一个html文件. 模板文件包含两部分内容: 静态内容:css.js.html. 动态内容:用于动态去产生一些页 ...

随机推荐

  1. Azure产品整理

    Azure的文档真是够落地,简明易懂. 计算 Linux 虚拟机:为 Ubuntu.Red Hat 等预配虚拟机 Windows 虚拟机 为 SQL Server.SharePoint 等预配虚拟机 ...

  2. VIJOS-P1450 包裹快递

    洛谷 P1542 包裹快递 https://www.luogu.org/problem/P1542 JDOJ 1527: VIJOS-P1450 包裹快递 https://neooj.com/oldo ...

  3. LG1640 「SCOI2010」连续攻击游戏 二分图最大匹配

    问题描述 LG1640 题解 一开始以为是把\((a,b)\)作为左右部点,发现\(n \le 1000000\),建图是\(O(n^2)\)的,会爆掉 属性值向\(i\)建边. \(\mathrm{ ...

  4. 【转】HTTPS 如何保证数据传输的安全性?

    大家都知道,在客户端与服务器数据传输的过程中,HTTP协议的传输是不安全的,也就是一般情况下HTTP是明文传输的.但HTTPS协议的数据传输是安全的,也就是说HTTPS数据的传输是经过加密的. 在客户 ...

  5. [LeetCode] 684. Redundant Connection 冗余的连接

    In this problem, a tree is an undirected graph that is connected and has no cycles. The given input ...

  6. Spring Cloud Alibaba整合Sentinel流控

    前面我们都是直接通过集成sentinel的依赖,通过编码的方式配置规则等.对于集成到Spring Cloud中阿里已经有了一套开源框架spring-cloud-alibaba,就是用于将一系列的框架成 ...

  7. 第02组 Alpha事后诸葛亮

    目录 1. 组长博客(2分) 2. 总结思考(27分) 2.1. 设想和目标(2分) 2.2. 计划(5分) 2.3. 资源(3分) 2.4. 变更管理(4分) 2.5. 设计/实现(4分) 2.6. ...

  8. X509证书 指定了无效的提供程序类型 System.Security.Cryptography.CryptographicException 错误解决方法

    第一种解决办法: IIS 应用程序池--选中你网站的所配置的应用程序池--右键 选择 “高级配置” --将“加载用户配置文件” 设置为True 第二种解决办法: 在加载证书方法时使用以下方法,请注意第 ...

  9. java对接微软认证,用oauth2.0实现

    由于官网所说所写的demo比较官方,比较难理解,而且只能到获取到token阶段,没有用户到用户信息.就算理解官网所写的,但是还是不能获取到用户信息,这对于业务系统做单点对接,增加很大的难度,附件代码是 ...

  10. SpringBoot第三篇:配置文件详解二

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10615605.html 版权声明:本文为博主原创文章,转载请附上博文链接! 前言   本文主要讲 ...