Django模型数据类型和模版标签详解
一:Django模型数据类型
Django中遵循 Code Frist 的原则,即:根据代码中定义的类来自动生成数据库表
以下是我在模型中写的数据:
class Cart(models.Model): sort = models.CharField(max_length=20, null=False) name = models.CharField(max_length=20, null=False) price = models.FloatField(max_length=20) unit = models.CharField(max_length=20) count = models.IntegerField(null=False) money = models.FloatField(default=0, null=False) tot_money = models.FloatField(default=0, null=False) def __str__(self): return self.name def publish(self): self.save()
这里用到许多数据类型,以下为常见类型总结:
models.CharField 字符串字段(必须参数 max_length)
models.BooleanField 布尔类型,不能为空,Blank=True
models.DateField 日期类型date,对于参数:auto_now = True每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变
models.DateTimeField 日期类型 datetime同DateField的参数
models.Decimal 十进制小数类型decimal,必须指定整数位max_digits和小数位decimal_places
models.EmailField 字符串类型(正则表达式邮箱),对字符串进行正则表达式
models.FloatField 浮点类型
models.IntegerField 整形
models.BigIntegerField 长整形
models.TextField 字符串=longtext
models.TimeField 时间 HH:MM[:ss[.uuuuuu]]
models.URLField 字符串,地址正则表达式
models.BinaryField 二进制
models.ImageField 图片
models.FilePathField 文件
括号里需要参数,所以以下是对参数的一些总结:
null=True (数据库中字段是否可以为空)
blank=True (django的 Admin 中添加数据时是否可允许空值)
primary_key = False(主键,对AutoField设置主键后,就会代替原来的自增id列)
auto_now 和 auto_now_add(auto_now 自动创建--无论添加或修改,都是当前操作的时间;auto_now_add 自动创建--永远是创建时的时间)
max_length (最大长度)
default (默认值)
verbose_name (Admin中字段的显示名称)
name|db_column (数据库中的字段名称)
unique=True (不允许重复)
db_index = True (数据库索引)
editable=True (在Admin里是否可编辑)
error_messages=None (错误提示)
auto_created=False (自动创建)
help_text (在Admin中提示帮助信息)
upload-to (上传到哪个位置,更多与image,filepath配合使用)
二:标签详解(1)标签的形式:{% tag %}
(2)标签的作用:
①在输出时创建一些文本
②通过执行循环和一些逻辑来实现控制流
③装载一些外部信息进入模板
(3)一些常用的内建标签:
①block 定义一个块,该块能够被继承他的子孙模板重写
{% block %} //(定义块内容) {% endblock %}
②comment 模板系统会忽略该标签内部的所有内容
{% comment %} //(内容) {% endcomment %}
③cycle 在循环时轮流使用给定的字符串列表中的值
<tr class="{% cycle list%}"> ... </tr>
④for 循环list中的每个值,进行相应的输出
{% for variable in list/dict %} //(使用variable) {% endfor%}
⑤if variable中可以使用and,or,not,但不允许and和or一起使用
{% if variable %} //(内容1) {% elif %} //(内容2) {% endif %}
⑥ifequal 判断两个变量是否相等
{% ifequal variable1 variable2 %} ... {% endifequal %}