美文网首页python学习实践程序员Python
Django-管理站点重写admin模板

Django-管理站点重写admin模板

作者: 妖s银眉 | 来源:发表于2017-08-01 16:13 被阅读340次

使用Django的admin管理工具,可以快速的构建自己的管理平台,使用Django原生太的模板更能使我们节省很多工作量。但有时候,模板上展现的内容并不能满足我们的业务需求,我们需要些许调整就可以达到我们想要的效果,此时我们可以通过重写admin模板来实现。

我们继续使用前面两篇文档中所使用的项目,并在此基础上来作调整。我们假设我们只允许添加Vm、查看Vm,不允许编辑Vm信息。因为添加、查看、编辑使用的是同一个模板文件,就必须重写模板文件。

重写模板

关键步骤
  1. 首先在我们的项目根目录下建立一个子templates目录 。

  2. 其次在templates目录下建立一个admin子目录。

  3. 然后在admin目录下以我人的应用名建立一个子目录(需要小写),如我们的应用cloud 。

  4. 在应用目录下以模型层的名字建立一个子目录(需要小写),如在cloud目录下创建vm目录。

  5. 我们从django/contrib/admin/templates/admin目录下拷贝change_form.html文件到我们新建立的vm目录下。

  6. 项目目录结构


    重写模板.png
  7. 修改setting.py文件中的配置项TEMPLATES, 将DIRS的值设置为[os.path.join(BASE_DIR, 'templates')]。TEMPLATES的整体信息如下:

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    
  8. 修改chang_form.html文件

修改chang_form.html文件
  1. 去除{% block object-tools %}……{% endblock %}代码块,如图示:

    重写模板_去除代码.png
  2. 去除{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}代码,如图所示:

    重写模板_去除代码_操作按钮.png
  3. 在{% block after_related_objects %}{% endblock %}代码后面新增代码{% if add %}{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}{% endif %},如图示:

重写模板_增加此行代码.png
  1. 启动项目,查看运行结果,新增信息时,有提交按钮,编辑页没有提交按钮。如图所示: 新增.png 修改.png
修改站点名称与Title

从 django/contrib/admin/templates/admin 目录下拷贝base_site.html文件至项目/templates/admin目录下。修改base_site.html,使之内容如下:

{% extends "admin/base.html" %}

{% block title %}云主机管理{% endblock %}

{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">云主机管理</a></h1>
{% endblock %}

{% block nav-global %}{% endblock %}
查看修改后效果: 修改站点名称与Title.png

补充

如果想整个站点以中文的形式展现,我们需要做一些全局配置。在settings.py文件中,找到LANGUAGE_CODE与TIME_ZONE,分别设置为‘zh-hans’与‘Asia/Shanghai’,修改之后,代码如下:

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

启动服务,查看效果,我们会发现界面以中文展现:


中文显示.png

知识链接

Admin模板文件位于contrib/admin/templates/admin 目录中。

如要覆盖一个或多个模板,首先在你的项目的templates 目录中创建一个admin 目录。它可以是你在TEMPLATES 设置的DjangoTemplates 后端的DIRS 选项中指定的任何目录。如果你已经自定义'loaders' 选项,请确保'django.template.loaders.filesystem.Loader' 出现在 'django.template.loaders.app_directories 之前。Loader',以便在包含django.contrib.admin的模板之前,模板加载系统可以找到您的自定义模板。

为一个特定的app重写admin模板, 需要拷贝django/contrib/admin/templates/admin 目录到你创建的app目录下, 并且修改它们.

如果我们只想为名为“Page”的特定模型添加一个工具到更改列表视图,我们将把同一个文件复制到我们项目的templates/admin/my_app/page目录。

每个应用或模型中可以被重写的模板

不是contrib/admin/templates/admin 中的每个模板都可以在每个应用或每个模型中覆盖。以下可以 ︰

app_index.html
change_form.html
change_list.html
delete_confirmation.html
object_history.html

对于那些不能以这种方式重写的模板,你可能仍然为您的整个项目重写它们。只需要将新版本放在你的templates/admin 目录下。这对于要创建自定义的404 和500 页面特别有用。

相关文章

  • Django-管理站点重写admin模板

    使用Django的admin管理工具,可以快速的构建自己的管理平台,使用Django原生太的模板更能使我们节省很多...

  • 08-Django站点管理&Cache缓存

    一、Admin站点管理(后台可视化界面操作) 概述 配置Admin应用 创建管理员用户 访问站点管理 站点管理的汉...

  • Django-站点管理

    一、站点管理介绍 站点分为内容发布和公共访问两部分 内容发布的部分有网站管理员负责查看,添加,修改,删除数据 Dj...

  • django admin站点管理

    创建管理员账户 注册模型类 使用admin.site.register(Question)就能注册一个模型类,但这...

  • admin管理站点

    创建一个管理员用户 python manage.py createsuperuser,按提示输入用户名、邮箱、密码...

  • 六、Admin 站点管理

    Admin 站点管理 用处 :提供数据库管理功能:基于admin模块,可以实现类似数据库客户端的功能,对数据进行增...

  • Django(三)--模型管理后台

    django有一个admin站点,将模型注册到admin后,有一个页面可以进行管理 myApp/admin.py

  • 08-Django站点管理&Cache缓存

    一、Admin站点管理(后台可视化界面操作) 概述内容发布: 负责添加、修改、删除内容公告访问 配置Admin应用...

  • 08-Django站点管理&Cache缓存

    一、Admin站点管理(后台可视化界面操作) 概述内容发布: 负责添加、修改、删除内容公告访问 配置Admin应用...

  • 08-Django站点管理&Cache缓存

    一、Admin站点管理(后台可视化界面操作) 概述内容发布: 负责添加、修改、删除内容公告访问 配置Admin应用...

网友评论

    本文标题:Django-管理站点重写admin模板

    本文链接:https://www.haomeiwen.com/subject/bvhjlxtx.html