2023 年即将画上句点,而 Django5 则像一颗耀眼的新星般闪亮登场!这个备受期待的全新版本不仅承载着众多期待,更将给 Python Web 开发带来一场前所未有的革命。让我们一起揭开 Django5 的神秘面纱,探寻其中蕴藏的无限可能,为全新的一年添上一抹绚丽的色彩!
新功能与变化
简化了表单字段的展示方式
引入了字段组 as_field_group的概念和字段组模板。 这简化了 Django 表单字段相关元素的渲染
如下面的模板
<form>
...
<div>
{{ form.name.label_tag }}
{% if form.name.help_text %}
<div class="helptext" id="{{ form.name.auto_id }}_helptext">
{{ form.name.help_text|safe }}
</div>
{% endif %}
{{ form.name.errors }}
{{ form.name }}
<div class="row">
<div class="col">
{{ form.email.label_tag }}
{% if form.email.help_text %}
<div class="helptext" id="{{ form.email.auto_id }}_helptext">
{{ form.email.help_text|safe }}
</div>
{% endif %}
{{ form.email.errors }}
{{ form.email }}
</div>
<div class="col">
{{ form.password.label_tag }}
{% if form.password.help_text %}
<div class="helptext" id="{{ form.password.auto_id }}_helptext">
{{ form.password.help_text|safe }}
</div>
{% endif %}
{{ form.password.errors }}
{{ form.password }}
</div>
</div>
</div>
...
</form>
现在可以简化为
<form>
...
<div>
{{ form.name.as_field_group }}
<div class="row">
<div class="col">{{ form.email.as_field_group }}</div>
<div class="col">{{ form.password.as_field_group }}</div>
</div>
</div>
...
</form>
数据库层定义字段的默认值
引入了新参数db_default 支持从数据库层定义字段的默认值,减轻了程序处理的负担
from django.db import models
from django.db.models.functions import Now, Pi
class MyModel(models.Model):
age = models.IntegerField(db_default=18)
created = models.DateTimeField(db_default=Now())
circumference = models.FloatField(db_default=2 * Pi())
通过计算动态生成列
新功能GeneratedField允许创建数据库时通过计算生成额外的列。该字段可在所有支持的数据库后端上使用,以创建始终根据其他字段计算的字段。例如下例中area字段时根据side的数值自动生成的。
from django.db import models
from django.db.models import F
class Square(models.Model):
side = models.IntegerField()
area = models.GeneratedField(
expression=F("side") * F("side"),
output_field=models.BigIntegerField(),
db_persist=True,
)
模型的choices参数中传入更灵活的值
© 版权声明
THE END
暂无评论内容