首页 文章

Django Admin - 更改 Headers 'Django administration'文本

提问于
浏览
159

如何更改django管理标头中的“Django管理”文本?

它似乎没有在“自定义管理员”文档中介绍 .

14 回答

  • 59

    对于Django 2.1.1,将以下行添加到 urls.py

    from django.contrib import admin
    
    # Admin Site Config
    admin.sites.AdminSite.site_header = 'My site admin header'
    admin.sites.AdminSite.site_title = 'My site admin title'
    admin.sites.AdminSite.index_title = 'My site admin index'
    
  • 2

    您只需覆盖 admin/base_site.html 模板(从 django.contrib.admin.templates 复制模板并放入您自己的管理模板目录)并替换 branding 块 .

  • 3

    您无需为此工作更改任何模板,只需更新项目的 settings.py 即可 . 转到 settings.py 的底部并定义它 .

    admin.site.site_header = 'My Site Admin'
    

    通过这种方式,您将能够更改Django管理员的标头 . 此外,您可以在以下链接上阅读有关Django Admin自定义和设置的更多信息 .

    Django Admin Documentation

  • 157

    您可以使用 AdminSite.site_header 更改该文本 . 这是docs

  • 302

    Update :如果您使用的是Django 1.7,请参阅answer below .

    2011年的原始答案:您需要创建自己的管理base_site.html模板才能执行此操作 . 最简单的方法是创建文件:

    /<projectdir>/templates/admin/base_site.html
    

    这应该是https://github.com/django/django/blob/master/django/contrib/admin/templates/admin/base_site.html的副本 - 除了输入您的自定义 Headers :

    {% block branding %}
    <h1 id="site-name">{% trans 'my cool admin console' %}</h1>
    {% endblock %}
    

    为此,您需要为项目设置正确的设置,即在settings.py中:

    • 确保将'/projectdir/templates/'添加到TEMPLATE_DIRS中

    • 确保将'django.template.loaders.filesystem.Loader'添加到TEMPLATE_LOADERS中

    有关settings.py的详细信息,请参阅http://docs.djangoproject.com/en/dev/ref/settings/

  • 2

    从Django 1.7开始,您不需要覆盖模板 . 您现在可以在自定义AdminSite上实现site_headersite_titleindex_title属性,以便轻松更改管理站点的页面 Headers 和 Headers 文本 . 创建一个AdminSite子类并将您的实例挂钩到您的URLconf:

    admin.py:

    from django.contrib.admin import AdminSite
    from django.utils.translation import ugettext_lazy
    
    class MyAdminSite(AdminSite):
        # Text to put at the end of each page's <title>.
        site_title = ugettext_lazy('My site admin')
    
        # Text to put in each page's <h1> (and above login form).
        site_header = ugettext_lazy('My administration')
    
        # Text to put at the top of the admin index page.
        index_title = ugettext_lazy('Site administration')
    
    admin_site = MyAdminSite()
    

    urls.py:

    from django.conf.urls import patterns, include
    from myproject.admin import admin_site
    
    urlpatterns = patterns('',
        (r'^myadmin/', include(admin_site.urls)),
    )
    

    Update :正如oxfn所指出的那样,您可以直接在 urls.pyadmin.py 中直接设置site_header而无需子类化 AdminSite

    admin.site.site_header = 'My administration'
    
  • 3

    有一种简单的方法可以设置管理站点 Headers - 像这样将它分配给_972779中的当前管理实例

    admin.site.site_header = 'My admin'
    

    或者可以在单独的方法中实现一些 Headers 构建魔法

    admin.site.site_header = get_admin_header()
    

    因此,在简单的情况下,不需要子类 AdminSite

  • 1

    基于这个问题的答案,Django 1.8.3中的一个简单的完整解决方案 .

    settings.py 添加:

    ADMIN_SITE_HEADER = "My shiny new administration"
    

    urls.py 添加:

    from django.conf import settings
    admin.site.site_header = settings.ADMIN_SITE_HEADER
    
  • 127

    在urls.py中,您可以覆盖3个最重要的变量:

    admin.site.site_header = 'My project'                    # default: "Django Administration"
    admin.site.index_title = 'Features area'                 # default: "Site administration"
    admin.site.site_title = 'HTML title from adminsitration' # default: "Django site admin"
    

    参考:Django documentation on these attributes .

  • 49

    最简单的方法就是确保你拥有它

    from django.contrib import admin
    

    然后只需在主应用程序的 url.py 底部添加这些内容

    admin.site.site_title = "Your App Title"
    admin.site.site_header = "Your App Admin"
    
  • 0

    正如您在templates中看到的那样,文本是通过本地化框架提供的(请注意使用 trans 模板标记) . 您可以更改翻译文件以覆盖文本,而无需创建自己的模板副本 .

    • mkdir locale

    • ./manage.py makemessages

    • 编辑 locale/en/LC_MESSAGES/django.po ,添加以下行:

    msgid "Django site admin"
    msgstr "MySite site admin"
    
    msgid "Django administration"
    msgstr "MySite administration"
    
    • ./manage.py compilemessages

    https://docs.djangoproject.com/en/1.3/topics/i18n/localization/#message-files

  • 1

    首先,您想要将templates / admin / base_site.html添加到您的项目中 . 这个文件可以安全地被覆盖,因为它是django开发人员用于定制管理站点的确切目的的文件 . 以下是放入文件内容的示例:

    {% extends "admin/base.html" %}
    {% load i18n %}
    
    {% block title %}{{ title }} | {% trans 'Some Organisation' %}{% endblock %}
    
    {% block branding %}
    <style type="text/css">
      #header
      {
        /* your style here */
      }
    </style>
    <h1 id="site-name">{% trans 'Organisation Website' %}</h1>
    {% endblock %}
    
    {% block nav-global %}{% endblock %}
    

    这是常见的做法 . 但在此之后我注意到我仍然在主管理员索引页面上留下了令人讨厌的“站点管理” . 并且此字符串不在任何模板内,而是设置在管理视图中 . 幸运的是,它很容易改变 . 假设您的语言设置为英语,请从项目目录运行以下命令:

    $ mkdir locale
    $ ./manage.py makemessages -l en
    

    现在打开文件locale / en / LC_MESSAGES / django.po并在 Headers 信息后添加两行(本例的最后两行)

    "Project-Id-Version: PACKAGE VERSION\n"
    "Report-Msgid-Bugs-To: \n"
    "POT-Creation-Date: 2010-04-03 03:25+0200\n"
    "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
    "Language-Team: LANGUAGE <LL@li.org>\n"
    "MIME-Version: 1.0\n"
    "Content-Type: text/plain; charset=UTF-8\n"
    "Content-Transfer-Encoding: 8bit\n"
    
    msgid "Site administration"
    msgstr "Main administration index"
    

    在此之后,请记住运行它并重新加载项目的服务器:

    $ ./manage.py compilemessages
    

    来源:http://overtag.dk/wordpress/2010/04/changing-the-django-admin-site-title/

  • 9

    admin.py:

    from django.contrib.admin import AdminSite
    
    AdminSite.site_title = ugettext_lazy('My Admin')
    
    AdminSite.site_header = ugettext_lazy('My Administration')
    
    AdminSite.index_title = ugettext_lazy('DATA BASE ADMINISTRATION')
    
  • 11

    由于我只在我的应用程序中使用管理界面,我把它放在admin.py中:

    admin.site.site_header = 'My administration'
    

相关问题