为什么Django中的模板继承不显示错误?

时间:2019-09-14 14:56:33

标签: django python-3.x django-templates

当模板继承似乎失败时,我没有看到错误。我看不到子模板的内容,但看不到“ TemplateNotFound”错误。如果将父模板的路径更改为“ notthefilename.html”,我仍然看不到错误。有没有办法使模板继承失败呢?我不知道为什么即使我在相邻文件夹中有类似的继承(按预期工作)也无法正常工作。

generic_create.html 文本'hello2'呈现。

{% extends "base.html" %}
{% load crispy_forms_tags %}

{% block content %}


<div style= "padding-top: 30px">
    <form method="post">{% csrf_token %}
        {% if model_name == 'TransactionsTable' %}
        <div>
            {% block transactions_create %}
            hello2
            {% endblock transactions_create %}             
        </div>        
        {% else %}
        {{ form |crispy }}
        {% endif %}
        <div id="container">
        <input type="submit"  class="btn btn-default" value="Save"> 
        <a href="{{ view.get_success_url }}" class="btn btn-default">Cancel</a>
        <div>
    </form>
</div>

{% endblock content %}

transactions_create.html -内容“ Hello1” 不是呈现

{% extends "generic_create.html" %}
{% load static %}

{% block transactions_create %}

Hello1

{% endblock transactions_create %}

1 个答案:

答案 0 :(得分:0)

由于@Daniel Roseman的评论,我意识到我正在向后执行继承。我也使事情复杂化了。使用include标记,我能够很轻松地执行我希望实现的那种继承。

generic_create.html

{% extends "base.html" %}
{% load crispy_forms_tags %}

{% block content %}


<div style= "padding-top: 30px">
    <form method="post">{% csrf_token %}
        {% if model_name == 'TransactionsTable' %}
        <div>
        {% include "transactions_create.html" %}     #NOTE: Here I removed the block and added 'include'.    
        </div>        
        {% else %}
        {{ form |crispy }}
        {% endif %}
        <div id="container">
        <input type="submit"  class="btn btn-default" value="Save"> 
        <a href="{{ view.get_success_url }}" class="btn btn-default">Cancel</a>
        <div>
    </form>
</div>

{% endblock content %}

transactions_create.html

Hello1 #removed all of the extend and 'block' code. 'include' just renders the html directly.

就是这样! “包括”确实简化了事情。

相关问题