geekdoc-python-zh/docs/askpython/django-extensions.md

7.6 KiB
Raw Permalink Blame History

Django 扩展–安装和实现扩展

原文:https://www.askpython.com/django/django-extensions

在本文中,我们将看到 Django 扩展功能扩展了 Django 中默认提供的功能。

各种重要的 Django 扩展

提供的各种重要扩展如下:

  • 管理扩展
  • 命令扩展
  • 调试器标签
  • 字段扩展
  • 模型扩展
  • 验证器
  • Powershell

下表给出了详细的分析

1.管理扩展

一些重要的扩展包括:

延长 描述
foreign keyautocompleteadmin 允许管理应用程序显示带有搜索输入字段的外键字段。
foreinkeyautocompletestackedinline
foreinkeyautocompletetabularinline 类似于 AutocompleteAd这两个类为 AdminInline 类中的外键字段启用搜索输入字段

Admin Extensions

2.命令扩展

一些最常用的命令扩展是:

延长 描述
Shell_plus Django shell 的增强版;已经自动加载了所有的模型,因此我们可以马上使用 ORM。
创建 _ 模板 _ 标签 在指定的应用程序中生成模板标记目录结构
生成 _ 密码 它会生成一个可用作用户密码的新密码。
导出 _ 电子邮件 以下列格式之一导出电子邮件地址Google、Outlook、LinkedIn 和 VCard
图形 _ 模型 它为应用程序创建了一个 GraphViz 点文件。它将应用程序的模型(通过)合并成一个单一的模型。输出通常指向一个点文件。
运行 _ 脚本 在姜戈运行一个脚本
sql_create 按照 settings.py 中的指定,生成创建数据库的 SQL。

Command Extensions

在后面的章节中,我们将会看到更多关于 shellshell _ plus的内容。

3.调试器标记

有了调试器标签,我们可以轻松调试 Django 模板。这些模板标签提供了三个过滤器——IPDB、PDB 或 WDB

语法是:

{% load debugger_tags %}

{% for object in objects %}
{{object | ipdb/pdb/wdb }}
{% endfor %}

过滤器 描述
IPDB 它是一个 Ipython 调试器工具,与 Ipython 一起使用来调试模型对象(与它一起使用)
物理数据库 调试模型对象是普通的 Python 调试器
WDB 它是一个 Web 调试器工具,用于通过浏览器本身调试基于 python 的应用程序。

Debugger Tags

**注意:**要使用过滤器,我们需要在模板文件的顶部加载调试器标签

{% load debugger_tags %}

4.字段扩展

一些有用的字段扩展包括:

随机场 创建具有指定长度的唯一随机字符
日期时间字段 当对象首次保存到数据库时DateTimeField 自动设置其日期
JSONField 这个文本字段整齐地序列化/反序列化 JSON 对象

Field Extensions

5.模型扩展

这些是重要的模型扩展:

延长 描述
ActivatorModel 这个抽象基类提供了一个状态、激活日期去激活日期
TitleDescriptionModel 这个抽象基类模型提供了 title 字段,它是一个最大长度为 255不可空 CharField以及一个可空描述字段。

Modle Extensions

6.验证器

Django 扩展提供的一些重要的验证器是:

延长 描述
无控制字符验证计算机 该属性确保了像新行制表符这样的控制字符是而不是所允许的。
NoWhitespaceValidator 这个属性确保了开头和结尾的空格是允许的而不是
HexValidator 确保该字符串是有效的十六进制字符串。也可以选择指定长度、最小长度和最大长度参数

Validators

安装 Django 扩展

我们可以使用 pip 命令本身安装扩展。运行代码

pip install django-extensions

我们还需要在 settings.py 中提到 Django 扩展。所以只需在 INSTALLED_APPS 目录中添加以下内容。

INSTALLED_APPS = [
    #......
    #......
    #......
    'django_extensions'
]

就这样Django 扩展已经可以使用了。

实现 Django 扩展

现在我们将看到如何在 Django 项目中使用重要的扩展

1.实施管理扩展

考虑我们在上一篇文章中构建的 BlogModel在 models.py 文件中有以下字段

from django.db import models

class BlogModel(models.Model):
    id = models.IntegerField(primary_key=True)
    blog_title = models.CharField(max_length=20)
    blog = models.TextField()

    def __str__(self):
        return f"Blog: {self.blog_title}"

此外,考虑一个 CommentModel ,它包含来自 BlogModel 表的特定博客的评论。在 models.py 文件中的BlogModel 下添加注释模型:

class CommentModel(models.Model):
    your_name = models.CharField(max_length=20)
    comment_text = models.TextField()
    blog = models.ForeignKey('BlogModel', on_delete=models.CASCADE)

    def __str__(self):
        return f"Comment by Name: {self.your_name}"

注意, blog 字段是连接 BlogModel 的 FK。现在admin.py 文件中,我们将对评论模型模板应用管理扩展。

from .models import *
from django_extensions.admin import ForeignKeyAutocompleteAdmin

@admin.register(CommentModel)
class BookModelAdmin(ForeignKeyAutocompleteAdmin):

    related_search_fields = {
        'blog':('blog_title',)
    }

    #Fields
    fields =('your_name','comment_text','blog')

有关管理模板的更多信息,请查看管理模板一文

现在运行服务器并转到管理站点

Admin Extensions

Admin Extensions

查看搜索选项如何出现在 FK 博客字段中。

2.用 Ipython 实现 shell_plus

要用 Ipython 运行 shell_plus我们首先需要安装它。

Ipython 是一个为 python 打造的交互式 shell。它使得 shell 环境高效且易于使用。它提供了我们可以使用的有用的环境工具和命令。

要安装 IPython请运行以下命令:

pip install ipython

现在使用下面的命令运行 shell_plus 和 ipython

python manage.py shell_plus --ipython

Shell Plus With Ipython

Shell Plus With Ipython

看,项目中的所有模型都自动加载到 shell 中。

其他一些重要的扩展

我们现在将在这里看到一些最常用的扩展

1.RandomCharField 扩展

您可以使用下面的命令在您的模型中添加该字段:

from django.db import models
from django_extensions.db.fields import RandomCharField

class ModelName(models.Model):
    Field1 = RandomCharField(length=12, unique =True, include_punctuation=True)

2.验证器

models.py 中这个扩展的语法是:

from django_extensions.validators import HexValidator

class ModelName(models.Model):
    Field1 = models.CharField(max_length=80, validators=[HexValidator(length=64)])

结论

就这样,伙计们!!这都是关于 Django 扩展的。我希望您已经获得了关于这些扩展的良好知识。请务必查看其他 Django 扩展的官方文档。

我们已经结束了 Django 系列教程。一定要看看我们关于 Django 的其他文章。继续编码!!