Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django管理-更改标题';Django管理局';文本_Python_Django_Django Admin - Fatal编程技术网

Python Django管理-更改标题';Django管理局';文本

Python Django管理-更改标题';Django管理局';文本,python,django,django-admin,Python,Django,Django Admin,如何更改Django admin标题中的“Django administration”文本 “定制管理员”文档中似乎没有介绍它。您只需覆盖admin/base\u site.html模板(从django.contrib.admin.templates复制模板并放入您自己的管理员模板目录)并替换品牌块。更新:如果您使用的是Django 1.7+,请参阅 2011年的原始答复: 要做到这一点,您需要创建自己的adminbase\u site.html模板。最简单的方法是创建文件: /<pro

如何更改Django admin标题中的“Django administration”文本


“定制管理员”文档中似乎没有介绍它。

您只需覆盖
admin/base\u site.html
模板(从
django.contrib.admin.templates
复制模板并放入您自己的管理员模板目录)并替换
品牌
块。

更新:如果您使用的是Django 1.7+,请参阅


2011年的原始答复: 要做到这一点,您需要创建自己的admin
base\u site.html
模板。最简单的方法是创建文件:

/<projectdir>/templates/admin/base_site.html
{% 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 %}
要使其工作,您需要为项目设置正确的设置,即在
settings.py

  • 确保将
    /projectdir/templates/
    添加到
    模板目录中
  • 确保将
    django.template.loaders.filesystem.Loader
    添加到
    template\u loaders
.

正如您在中所看到的,文本是通过本地化框架交付的(请注意
trans
模板标记的使用)。您可以对翻译文件进行更改以替代文本,而无需制作自己的模板副本

  • mkdir语言环境

  • /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编译消息


  • 请参见

    首先,您应该向项目中添加模板/admin/base\u site.html。这个文件可以被安全地覆盖,因为Django开发人员打算将其用于定制您的管理站点。下面是一个在文件中放置内容的示例:

    /<projectdir>/templates/admin/base_site.html
    
    {% 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 %}
    
    现在打开文件locale/en/LC_MESSAGES/django.po,在头信息后添加两行(本例的最后两行)


    来源:

    从Django 1.7开始,您不需要覆盖模板。您现在可以在自定义页面上实现、和属性,以便轻松更改管理站点的页面标题和标题文本。创建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()
    
    from django.conf.urls import patterns, include
    from myproject.admin import admin_site
    
    urlpatterns = patterns('',
        (r'^myadmin/', include(admin_site.urls)),
    )
    
    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')
    
    更新:正如oxfn所指出的,您只需在
    url.py
    admin.py
    中直接设置

    admin.site.site_header = 'My administration'
    

    有一种简单的方法可以设置管理员站点标题-将其分配给
    url.py中的当前管理员实例,如下所示

    admin.site.site_header = 'My admin'
    
    或者可以在单独的方法中实现一些头部构建魔法

    admin.site.site_header = get_admin_header()
    

    因此,在简单的情况下,不需要在Django 1.8.3中根据这个问题的答案将一个简单的完整解决方案子类化

    settings.py
    中添加:

    ADMIN_SITE_HEADER = "My shiny new administration"
    
    from django.conf import settings
    admin.site.site_header = settings.ADMIN_SITE_HEADER
    
    url.py中添加:

    ADMIN_SITE_HEADER = "My shiny new administration"
    
    from django.conf import settings
    admin.site.site_header = settings.ADMIN_SITE_HEADER
    

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

    from django.contrib import admin
    
    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"
    


    参考:。

    由于我只在我的应用程序中使用管理界面,所以我将其放在admin.py中:

    admin.site.site_header = 'My administration'
    

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

    admin.site.site_header = 'My Site Admin'
    
    通过这种方式,您将能够更改Django管理员的标题。此外,您可以在下面的链接上阅读更多关于Django管理员自定义和设置的信息


    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()
    
    from django.conf.urls import patterns, include
    from myproject.admin import admin_site
    
    urlpatterns = patterns('',
        (r'^myadmin/', include(admin_site.urls)),
    )
    
    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')
    

    最简单的方法 确保你有

    from django.contrib import admin
    
    然后只需将这些添加到主应用程序的
    url.py
    底部

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

    您可以使用
    AdminSite.site\u标题
    更改该文本。以下是Django 2.1.1的

    ,在
    url.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'
    

    有两种方法可以做到这一点:

    1] 通过覆盖
    django/contrib/admin/templates/admin/base\u site.html中的
    base\u site.html
    : 以下是
    base\u site.html
    的内容:

    {% extends "admin/base.html" %}
    
    {% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
    
    {% block branding %}
    <h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a></h1>
    {% endblock %}
    
    {% block nav-global %}{% endblock %}
    

    推荐使用此方法,因为我们可以更改站点标题、站点标题和索引标题,而无需从Django 2.0编辑
    base\u site.html
    ,您只需在
    url.py
    中添加一行即可更改名称

    #url.py
    从django.contrib导入管理
    admin.site.site_header=“我的管理中心”#添加此
    

    对于较旧版本的Django。(只需转到admin.py文件并在文件中添加以下行:


    admin.site.site\u header=“My Administration”

    您可以在主
    url.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'
    
    您可以在要显示的引号中添加文本

    要替换文本Django admin,请使用
    admin.site.site\u header=“”

    要替换文本“站点管理”,请使用
    admin.Site.Site\u title=“”

    要替换站点名称,可以使用
    admin.site.index\u title=“”


    要替换“查看站点”按钮的url,您可以使用
    admin.site.site\u url=“”

    希望我来参加聚会不会太迟,最简单的方法是编辑admin.py文件

    admin.site.site_header = 'your_header'
    admin.site.site_title = 'site_title'
    admin.site.index_title = 'index_title'
    

    使用
    format\u html
    允许呈现html,否则它将只是纯文本

    在主
    urls.py
    文件中添加以下内容(
    urls.py
    位于
    settings.py
    存在的目录中):


    还请注意,您可以在
    //templates/admin/base\u site.html
    {%extends“admin/base.html”%}
    ,只需重新定义所需的块,即
    {%block branding%}…{%endblock%}
    。即使很旧,我想补充一点,您必须将您定义此模板的应用程序放在“django.contrib.admin”之前,在django 1.6 python 3.3中的已安装应用程序中,即使您没有添加
    模板加载程序
    设置,上述操作仍然有效。只需
    模板_DIR
    就足够了,它似乎在1.7中已经过时。请参阅Reto Aebersold的答案。在url.py中试试这个