Django 如何将数据加载到初始 base.html 模板

Django How to Load data to the initial base.html template

我的初始模板 base.html 必须加载开始时动态加载项目的菜单。可能吗?一些提示?

您可以使用Django 提供的模板继承。但在您的情况下,假设您有两个不同的模板,名称分别为 navbar.htmlbase.html,并且您想将 navbar.html 添加到 base.html 的开头。使用 Django 标签(即 {% include 'navbar.html' %} ),您可以将 navbar.html 内容包含在 base.html 中。就像下面的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Try Django</title>
</head>
<body>
{% include 'navbar.html' %}
</body>
</html>

在其他情况下,如果您想向 base.html 添加内容(例如 product_list.html),您可以在目标模板中使用 Django 标记(即 {% extends 'base.html' %} ),但不要忘记在 base.html 中使用 {% block content %}{% endblock content %}(例如在 base.html 的正文标签中,然后在您的 {% block content %}{% endblock content %} 中使用目标模板。最后只需在你的块内容之间添加你的代码。有关更多信息,请查看以下代码: base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Try Django</title>
</head>
<body>
{% include 'navbar.html' %}
{% block content %}{% endblock content %}
</body>
</html> 

product_list.html

{% extends 'base.html' %}
{% block content %}

{% for obj in object_list %}
    {{ obj.id }} - <a href="{{ obj.get_absolute_url }}">{{ obj.name }}</a><br>
    {% endfor %}
{% endblock content %}

如果您需要其他东西,请前往 Django template docs