多级html模板文件继承,Jinja2的多级模板继承问题

我明白你的问题:你有模板A,模板B(扩展模板A)和模板C(扩展模板B)。在模板A中定义了一个块,但它不会显示在使用模板C的页面中,除非您在模板B中定义该块。如果这样做,则然后有问题的块出现。

第一:您的理解是正确的,这是而不是 Jinja模板层次结构应该如何工作。其次,我没有遇到你的问题(虽然发现了另一个问题),并且我已经构建了一个证明来证明这一点。这是我做了什么(同样,使用Python 3和Django的1.11):

$ python startproject myapp

在myapp/myapp/settings.py文件,我更新了模板引擎:

TEMPLATES = [

{

'BACKEND': 'django.template.backends.jinja2.Jinja2',

'DIRS': [

os.path.join(BASE_DIR, 'myapp/templates') # hack/should add `myapp` to INSTALLED_APPS instead

],

'APP_DIRS': True,

'OPTIONS': {

'context_processors': [

'django.template.context_processors.debug',

'django.template.context_processors.request',

'django.contrib.auth.context_processors.auth',

'django.contrib.messages.context_processors.messages',

],

},

},

]

在myapp/myapp/urls.py,我创建了一个虚拟视图功能& route:

from django.conf.urls import url

from django.shortcuts import render_to_response

def home(request):

return render_to_response('dashboard.html')

urlpatterns = [

url(r'^$', home),

]

最后,我建立了这些模板,但我删除了导入宏以及​​3210的所有实例的调用。

这里是myapp/myapp/templates/skeleton.html文件:

{% block head_content %}

{% if page_title %} {{ page_title }} | {% endif %} Bhargavi Books & Stationery

{% endblock head_content %}

{% block frame_content %}

Body content goes here. Body for {{ content_name }}

{% endblock frame_content %}

{% block app_content %}

APP content goes here. Body for {{ content_name }}

{% endblock app_content %}

{% block scripts %}

{% endblock scripts %}

这里是myapp/myapp/base.html文件:

{% extends "skeleton.html" %}

{% block frame_content %}

Frame Content

{% endblock frame_content %}

{% block scripts %}

{{ super() }}

{% endblock scripts %}

这里是myapp/myapp/templates/dashboard.html文件:

{% extends "base.html" %}

{% block body_content %}

Body 3

{% endblock body_content %}

{% block app_content %}

DASHBOARD

{% endblock app_content %}

这里是输出,在我的浏览器中查看该页面后:

Bhargavi Books & Stationery

Frame Content

DASHBOARD

由于预期*这所有的作品,我的结论是,你可能有与base.html问题模板文件。也许它没有导入你的宏,然后不能正确表现?我注意到那里有一个尾随的逗号,我不确定这可能是否有问题。我建议使用上面的代码作为出发点,然后慢慢地加回去掉的部分,也许问题会变得可见/可以理解。

*我发现奇怪的一件事,我不明白:body_content块是完全从我的输出中丢失,除非我在skeleton.html模板中定义该块。它不工作,如果我在base.html模板中定义它,这对我来说似乎是错误的,因为那么我们不是真的延伸第二个模板(base.html)...所以有确实似乎是奇怪的那里......但我无法遇到你所描述的原始问题,所以或许至少在这方面会有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值