首页 > 解决方案 > 如何将我的 html 导航栏添加到 django 中的另一个 html 文件中

问题描述

我对 Django 还是很陌生,我想将导航栏的 HTML 及其各自的 CSS 添加到我的基本 HTML 文件中。这是我到目前为止所做的:

在 app/base.html 中:

{% extends "BritIntlSchl/navbar.html" %}
{% load static %}
<!DOCTYPE html>
<html>
<head>
    <title>page title</title>
    <link href="{% static 'appname\stylebase.css' %}" rel="stylesheet"> 
    <link href="{% static 'appname\navbarstyles.css'}" rel="stylesheet" %}">  
    {% block head-content %}{% endblock head-content %}
</head>
    {% block nav%}{% endblock nav %}
    {% block content1 %}{% endblock content1 %}
</body>
</html>

在 app/navbar.html 中:

{% block nav%}    
<div class="wrap">...</div>
{% endblock nav%}

我在这里几乎迷路了。我确信将{% block nav%} 放在导航栏周围没有任何作用。你建议我怎么做?

我正在使用 Django 2.1。

标签: djangodjango-templatesnavbar

解决方案


当一个人使用extend模板标签时,不能在任何块之外有任何 HTML,因为这样就会混淆将这个 HTML 放在哪里(所以实际上甚至不会考虑 HTML)。因此,当您最多扩展/navbar.html时,您可以填充您实际上覆盖的命名块nav并且什么都不填充。您要做的是使用include模板标签将导航栏包含到base.html

base.html:

{% load static %}
<!DOCTYPE html>
<html>
<head>
    <title>page title</title>
    <link href="{% static 'appname\stylebase.css' %}" rel="stylesheet"> 
    <link href="{% static 'appname\navbarstyles.css'}" rel="stylesheet" %}">  
    {% block head-content %}{% endblock head-content %}
</head>
    {% block nav %}{% include 'app/navbar.html' %}{% endblock nav %}
    {% block content1 %}{% endblock content1 %}
</body>
</html>

注意:我们放在{% block nav %}那里不是因为navbar.html会填充它,而是因为某些页面扩展base.html可能需要自定义导航栏。

导航栏.html:

<div class="wrap">...</div>

推荐阅读