我是Django的新手,我正在练习模板继承。我目前在第3级继承模板时遇到问题。基本级别是我整个站点使用的模板(例如:navbars)。第二级是我网站的内容。但是这个内容有点冗长,所以我拿了一部分(contactform.html
)并为该部分创建了自己的HTML文件。
我可以将home.html
加入我的index.html
,就像这样
{% load staticfiles %}
<!DOCTYPE html>
<html>
<head lang="en">
<link href="{% static "css/boothie.css" %}" rel="stylesheet" type="text/css">
<script src="{% static "js/boothie.js" %}"></script>
<script src="{% static "js/jquery.easing.1.3.js" %}"></script>
<title>Boothie</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
在home.html
我想要加入contactform.html
。这是我到目前为止所做的。
{% extends "index/index.html" %}
{% load staticfiles %}
{% block content %}
...
...
...stuff...
<!-- contact -->
{% block contactform %}{% endblock %}
{% endblock %}
我的contactform.html
:
{% extends "home/home.html" %}
{% load staticfiles %}
{% block contactform %}
<section id="contact">
<!-- HTML! -->
</section>
{% endblock %}
这是我家里目前的情况/ views.py:
from django.shortcuts import render
from django.views import generic
class HomeView(generic.TemplateView):
template_name = "home/home.html"
my home / urls.py:
from django.conf.urls import patterns, url
from home.views import HomeView
urlpatterns = patterns('',
url(r'^$', HomeView.as_view(), name="home"),
)
TEMPLATE_DIRS:
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates'),
os.path.join(BASE_DIR, 'home'),
)
这是我的项目结构图:
答案 0 :(得分:3)
只需在主页模板中包含contactform模板,而不是继承。在home / home.html中:
<section id="contact">
{% include 'home/contactform.html' %}
</section>
答案 1 :(得分:1)
您不需要extend
,而是include
示例,保留contact_form.html
的内容仅包含所需的html内容(不包含扩展名,block
标记等),然后include
the html snippet。现在,django会为你做魔术 - 包含的片段也会包含所有的上下文变量。
{% extends ".." %}
{% load staticfiles %}
{% block content %}
...
...
...stuff...
{% include /path/to/contactform.html %}
{% endblock %}