Django;如何在模板中调试{%include''%}标签

时间:2018-07-10 13:30:15

标签: django templates include

有时,我的include标记会返回一个空字符串,这是不可能的,因为其中包含一些静态元素。

有时在我的生产环境中会发生这种情况。我该如何调试此类问题?

例如,我的页脚或页眉在某些情况下消失了(我将其包含在“ base.html”中)而无法复制。

Thx

示例:

base.html

<html>
... 
{% include "subdir/_header.html" %}
...
{% block content %}
    <h1>Default Content</h1>
{% endblock %}

...
{% include "subdir/_footer.html" %}
</html>

home.html

{% extends "base.html" %}

{% block content %}
   <h1>Home related Content</h1>
{% endblock %}

因此,如果我加载home.html,则页脚有时会消失。不知道为什么,没有错误。

发现问题

缺少静态文件导致了此类问题。不幸的是,我没有收到错误消息。

2 个答案:

答案 0 :(得分:1)

我不知道此问题的确切原因,但是您可以尝试使用{%extended'base.html'%}。

包含和扩展之间的区别就在这里:

{% include %} vs {% extends %} in django templates

答案 1 :(得分:0)

您的基本html应该扩展,不包括在内。...包含小段代码,例如组件...博客文章,新闻,联系方式等等

基本html

{% load static %}

<!DOCTYPE html>
<html lang="en-US">

{% include 'path/head.html' %}

{% block content %}{% endblock %}

{% include 'path/footer.html' %}

</html>

其他页面

{% extends 'base.html' %}
{% load static %}

{% block content %}
<!-- Content from each page -->
{% endblock %}

糟糕:不能正确地包含在include的内部,您可以从includes include的第一页中获取数据...为此,我通常根据需要使用templatetags或context_processors。

使用django-debug-toolbar在开发环境中调试整个应用程序,您可以看到整个请求以及所需的

https://django-debug-toolbar.readthedocs.io/en/stable/