查看原文
其他

Django 5.0 正式发布

小懒 FED实验室 2024-02-12
关注下方公众号,获取更多热点资讯

备受欢迎的 Python Web 框架 Django 5.0 版本正式发布,该版本带来众多特性更新。本文将深入探讨 Django 5.0 提供的令人兴奋的新功能。

1.Python 兼容性

Django 5.0 支持 Python 3.10、3.11 和 3.12,确保开发人员可以利用最新的 Python 功能和增强功能。强烈建议使用最新版本的 Python 以获得最佳体验。

2.管理中的面板滤器

由于引入了面板过滤器,在 Django 管理界面中管理数据现在比以往任何时候都更容易。通过用户界面开启后,管理更改列表中会显示已应用过滤器的面板计数。该功能可使用新的 ModelAdmin.show_facets 属性进行自定义,从而为用户提供更直观的方式来筛选和探索数据。

3.表单字段渲染的简化模板

Django 5.0 引入了 "字段组" 和字段组模板的概念,简化了 Django 表单字段的渲染。这种简化大大减少了渲染表单元素所需的 HTML 和模板代码量,使您的模板更简洁、更易于维护。

例如下面的模板:

<form>
...
<div>
  {{ form.name.label_tag }}
  {% if form.name.help_text %}
    <div class="helptext" id="{{ form.name.id_for_label }}_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.id_for_label }}_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.id_for_label }}_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>

4.数据库计算的默认值

有了新的 "Field.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())

5.数据库生成的模型字段

新的 GeneratedField 使开发人员能够在 Django 模型中创建数据库生成的列。该字段可根据模型中的其他字段计算其值,从而简化复杂的计算并确保数据库级别的数据完整性。

例如:

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"), db_persist=True)

6.声明字段选择的更多选项

Django 5.0 增强了声明字段选择的灵活性。现在,您可以使用映射或可调用方式代替可迭代方式,从而更轻松地定义模型和表单字段的选择。这一更新简化了选择的管理,并允许使用更多动态选项。

7.其他更新

Django 5.0 为框架的各个部分带来了许多次要功能和改进。一些值得注意的更新包括管理站点的增强、异步身份验证功能、对地理空间操作的扩展支持、消息处理的改进等。

向后不兼容的变更:

虽然 Django 5.0 引入了令人兴奋的新功能,但必须注意向后不兼容的更改。这些更改可能需要在您的代码库中进行调整,因此请务必查看发布说明以确保平稳过渡。

5.0 过时的功能:

此外,Django 5.0 还标志着某些功能的废弃。这些功能将在未来的版本中移除,因此建议您相应地更新代码以保持兼容性。

5.0 中移除的功能:

一些在以前版本中被弃用的功能已达到其弃用周期的终点,并在 Django 5.0 中被移除。请务必检查您的代码是否依赖于这些功能,并进行相应的更新。

结论

「你永远可以相信 Django。」

Django 5.0 是一个令人兴奋的版本,它的大量新功能和改进将使开发人员受益并简化网络开发流程。无论您是在构建新项目还是在升级现有项目,建议你开始探索这些梦幻般的新功能!

大家都在看

继续滑动看下一个

Django 5.0 正式发布

小懒 FED实验室
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存