0. 引入
整套课程地址:click here。
我们发现,在一个应用当中,甚至是全局,HTML代码有好多一样的东西,甚至是只需要修改内容。这时候涉及的问题是:那些不变的代码可不可以复用?
这就涉及到了模板继承与嵌套。
网上有一篇文章讲的挺好的,可以参考。click here
1. base.html
不需要变动的代码可以写到base.html当中。代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
</head>
<body>
<div>
<a href = {% url "home" %}>
<h3>只要不延毕就好了</h3>
</a>
</div>
<hr>
{% block content %}{% endblock %}
</body>
</html>
{% block xx %}{% endblock %}是可以被继承、被改写的部分。其他部分则是固定写法。其中,xx为{% block %}而起的名字。
2. 复用
比如我们修改一下blog_detail.html的代码。
首先,第一行必须是{% extends "base.html" %}。
例:
{% extends "base.html" %}
然后就是对继承部分进行改写。示例:
{% block title %}
{{ blog_type.type_name }}
{% endblock %}
{% block content %}
<p>共有{{ blogs | length }}篇博客</p>
{% for blog in blogs %}
<a href = {% url "blog_detail" blog.pk %}><h3>{{ blog.title }}</h3></a>
{% empty %}
<p>暂无博客,敬请期待!</p>
{% endfor %}
{% endblock %}
可以看出这是对base.html的继承。改写了{% blog title %}与{% blog content %}两部分。
3. 设置通用templates
如果一个应用一个应用地设置页面,恐怕比较麻烦。那么我们有没有让多个应用共同使用同一模板的方法?
答案是将templates文件夹放到根目录去。
这时候需要动一下settings.py文件。如下:
TEMPLATES = [ # 只需要改变TEMPLATES中的"DIRS"键值对就可以了。
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, "templates"), # 设置默认模板位置。改成这样
],
然后在根目录创建templates文件夹。把base.html移动到其中。
然后再创建templates/blog文件夹,把blog应用创建的模版html页面移动到其中。
最后修改一下blogs中的views.py文件。如下:
return render_to_response("blog/blog_list.html", context)
# 只需要修改一下render_to_response中第一个参数。加上正确的路径即可。
本课结束。









网友评论