很明显,每个项目的admin页面顶部都写着“Django administration”是荒谬的。它其实只是一个占位文本。
修改它很容易,使用Django的模板系统即可。Django admin是由Django自己创建的,它的接口使用了Django自己的模板系统。
**定制你的工程模板**
在工程文件夹【包含**manage.py**的文件夹】中创建一个**templates**目录。模板可以放在Django可以访问的任意位置。你的服务器操作系统运行时的用户级别,就是Django运行时的用户级别。当然了,把模板文件放在工程目录下是一个不错的习惯。
打开你的配置文件(**mysite/settings.py**),在**TEMPLATES**配置项中加入**DIRS**键:
~~~
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',
],
},
},
]
~~~
**DIRS**是一个列表类型的搜索路径,当加载Django模板时,会检查列表中存储的文件系统目录。
>[success] **模板组织**
>像静态文件一样,我们可以把所有的模板放在一起,撂在一个大的模板文件夹中,它会工作的很好。但是,隶属于某一个特定应用的模板,应该放在应用的模板文件夹中(比如:**polls/templates**),而不是都放在工程目录下(上面说的**templates**目录)。我们会在[复用应用教程](https://docs.djangoproject.com/en/1.10/intro/reusable-apps/)中详细讨论为什么建议这么做。
现在,在**templates**目录下创建一个叫做**admin**的目录,然后将模板文件**admin/base_site.html**,从Django默认的admin模板目录中,拷贝到这个文件夹下,默认的admin模板目录,在Django源码目录下(**django/contrib/admin/templates**)
>[info] **Django源码文件在哪里?**
> 如果你很难定位到Django源码文件位置,可以运行以下命令:
~~~
$ python -c "import django; print(django.__path__)"
~~~
然后,便可以编辑文件,记着用你自己想要的站点名字,替换掉
**{{ site_header|default:_('Django administration') }}**【包含大括号】。你修改后的代码看上去应该像这样:
~~~
{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">Polls Administration</a></h1>
{% endblock %}
~~~
我们使用这个方法教你如何修改“Django administration”。在实际项目中,你可能会用**django.contrib.admin.AdminSite.site_header**这个属性,来更简便的完成定制化。
这个模板文件包含了很多类似于**{% block branding %}**和**{{ title }}**这样的文本。其中**{%**和**{{**标记是Django的末班语言。当Django渲染**admin/base_site.html**时,这个模板语言会被处理为最终的HTML页面,就像我们在[第3课](https://docs.djangoproject.com/en/1.10/intro/tutorial03/)教程中看到的那样。
记住所有的Django默认admin模板都可以被重写。要重写一个模板,按照上面处理**base_site.html**的步骤即可 -- 从默认文件夹中,拷贝到你自己的文件夹中,然后修改它。