【发布时间】:2011-07-19 20:30:26
【问题描述】:
我想在 AJAX 和常规 HTTP 调用之间共享一个模板,唯一的区别是一个模板需要提供 base.html html,另一个不需要。
有什么想法吗?
【问题讨论】:
标签: python ajax django django-templates
我想在 AJAX 和常规 HTTP 调用之间共享一个模板,唯一的区别是一个模板需要提供 base.html html,另一个不需要。
有什么想法吗?
【问题讨论】:
标签: python ajax django django-templates
其他答案要求您传递一个额外的上下文变量。但是只要能访问到request对象就不需要了:
{% extends request.is_ajax|yesno:"app/base_ajax.html,app/base.html" %}
我发现这样更方便。
【讨论】:
{% block 'someblock' %}?
django-compressor 将为app/base.html 情况创建缓存,但不会为app/base_ajax.html 创建缓存,这将在尝试加载缓存模板时失败(生成的离线清单中没有键)。
使用变量。
{% extends base_template %}
在您的视图中,将其设置为“base.html”,或者一个新的“ajax.html”文件,它只提供块而不是其他任何东西。
【讨论】:
{% extends override_base|default:'base.html' %}
附:我知道这是一个老问题,但我在寻找答案时发现了它。也许它会帮助其他有同样问题的人。
【讨论】:
你可以使用 {% extends variable %}
当您在视图中创建上下文时,传入一个变量基本模板名称。
http://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#extends
【讨论】: