自定义Django管理模板

时间:2018-03-28 11:51:52

标签: django django-templates django-admin

我尝试像这样自定义导航栏

Base_site.html

 {% block nav-global %}
 <img class = "brand_img" src = "{% static 'images/ic_launcher.png'%}" 
    width = "50" height = "50" alt = "logo">
 {%block branding%}    

  {% endblock %}
  <div class = "head">
    <h1 id = "name">Admin Dashboard</h1>
  </div>    
{% endblock %}

看起来像这样

admin page

现在我尝试在{%block branding%}

中添加登录页面的标题

login page

但如果我在品牌栏中添加它也会在导航栏中显示,如果我尝试在品牌块图像中添加图像和标题,则会显示登录页面标题。

如何为导航栏和登录页面标题添加不同的标题?

2 个答案:

答案 0 :(得分:7)

这很容易实现。

templates文件夹中,您应该创建了一个admin子文件夹。在那里,您应该放置文件base_site.htmllogin.html

base_site.html的内容:

{% extends 'admin/base_site.html' %}

{% load static %}

{% block branding %}
    <div class="head">
        <h1 id="name">Admin Dashboard</h1>
    </div>
{% endblock %}

{% block nav-global %}
    <img class="brand_img" src="{% static 'images/ic_launcher.png'%}" width="50" height="50" alt="logo">
{% endblock %}

login.html的内容:

{% extends 'admin/login.html' %}

{% block branding %}
    <div class="head">
        <h1 id="name">Custom header text for LOGIN screen only</h1>
    </div>
{% endblock %}

以下是正确的项目结构:

project/
    myapp/
    myapp2/
    project/
    templates/
        admin/
            base_site.html
            login.html
    manage.py

请注意您要覆盖的每个html模板中的extends。这很重要。有关详细信息,请查看docs

答案 1 :(得分:1)

我发现您需要像这样调整DIRSTEMPLATES中的settings.py

TEMPLATES = [
    {
        'BACKEND': .....,
        'DIRS': [os.path.join(BASE_DIR, 'templates')], # <-- add this line here
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                .....
            ],
        },
    },
]

这是告诉您的应用程序在哪里寻找这些文件所必需的。除了上面@nik_m的解决方案之外,这对我也有用....