很明顯,每個項目的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**的步驟即可 -- 從默認文件夾中,拷貝到你自己的文件夾中,然后修改它。