多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
很明显,每个项目的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**的步骤即可 -- 从默认文件夹中,拷贝到你自己的文件夹中,然后修改它。