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 %}

相关推荐