社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Django 5.0正式发布,超流行Python Web框架

Python编程 • 4 月前 • 120 次点击  
来自公众号:OSC开源社区
Django 5.0 已正式发布

根据 JetBrains 公布的 2022 Python 开发者调查结果,Python Web 框架的三巨头依旧是 Flask、Django 和 FastAPI。Django 和 Flask 的使用率排名并列第一。


Django 5.0 支持最新的 Python 版本,包括 Python 3.10、3.11 和 3.12。此外还引入了字段组 (field group),用于简化 Django 表单字段的相关元素的渲染。
下面是值得关注的变化:
  • Python 兼容性

Django 5.0 支持 Python 3.10、3.11 和 3.12。开发团队建议用户使用每个 Python 分支的最新版本。
此外,Django 4.2.x 系列是最后一个支持 Python 3.8 和 3.9 的版本。
  • 针对表单字段渲染的简化模板

Django 5.0 引入了字段组 (field group) 和字段组模板 (field group templates) 的概念。该特性简化了 Django 表单字段相关元素的渲染,例如标签、小部件、帮助文本和错误等。
例如下面的模板:
<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>
  • 数据库计算的默认值

新的 Field.db_default 参数用于设置数据库计算 (database-computed) 的默认值。例如:
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 支持创建数据库生成的列。该字段可在所有支持的数据库后端上使用,以创建始终根据其他字段计算的字段。例如:
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)
详情查看 Django 5.0 release notes:https://docs.djangoproject.com/en/5.0/releases/5.0/
随着 Django 5.0 的发布,Django 4.2 已结束其 mainstream 支持,最后一个小错误修复版本 4.2.8 已于昨天发布。Django 4.2 是 LTS 版本,会在 2026 年 4 月之前获得安全和数据丢失修复。
此外,Django 4.1 的扩展支持已结束。最终安全版本 (4.1.13) 于 11 月 1 日发布。建议所有 Django 4.1 用户升级到 Django 4.2 或更高版本。

相关链接:

  • https://www.djangoproject.com/weblog/2023/dec/04/django-50-released/

  • https://www.djangoproject.com/weblog/2023/dec/04/bugfix-release/

---END---

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/165803
 
120 次点击