我的博客开发(002)
因为三个html大部分相似,为了减少重复工作,建立一个base.html文件用于存放共同的内容,然后将各自特有的代码留下,需要的时候用block去调用对应内容即可:
base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<a href="{% url 'home' %}">
<h3>个人博客网站</h3>
</a>
</div>
</body>
</html>
修改方法如下:
blog_detail.html
{# 删除和base中重复的内容,留下独有的内容,然后分别填充到下面的两个block中 #}
{# 这是页面标题 #}
{% extends 'base.html' %} {# 导入base.html中的内容 #}
{% block title %} {# 用于填充title #}
{{ blog.title }} {# 这里因为之前title被包起来了,所以直接用变量即可 #}
{% endblock %}
{# 这是页面内容 #}
{% block content %}
{# 这里因为没有将这些内容抱起来,所以整体复制进来即可 #}
<h3>{{blog.title}}</h3>
<p>作者:{{ blog.author }}</p>
{# 这里为啥标红?另外这里年月日时分秒和Python的datetime中有点不一样,在分钟那html用n表示!H表示24进制小时,h表示12进制 #}
<p>发表日期:{{ blog.created_time|date:"Y-m-d H:n:s" }}</p>
<p>分类:<a href="{% url 'blogs_with_type' blog.blog_type.pk %}">{{ blog.blog_type }}
</a></p>
<p>{{blog.content}}</p>
{% endblock %}
blog_list.html
{# 删除和base中重复的内容,留下独有的内容,然后分别填充到下面的两个block中 #}
{# 这是页面标题 #}
{% extends 'base.html' %} {# 导入base.html中的内容 #}
{% block title %} {# 用于填充title #}
刘子君的博客 {# 这里因为之前title被包起来了,所以直接用变量即可 #}
{% endblock %}
<hr>
{# 这是页面内容 #}
{% block content %}
{% for blog in blogs %}
{# <a href="{ % url 'blog_detail' blog.pk % }">#}
<a href="{% url 'blog_detail' blog.pk %}">
<h3>{{blog.title}}</h3>
</a>
{# 管道符表示过滤,这句话意思是对blogcontent中的内容过滤,只剩30字符显示,这里不知为啥起作用了但pycharm识别为错误#}
<p>{{ blog.content|truncatechars:30 }}</p>
{% empty %}
<p>----- 敬请期待,暂无博文 -----</p>
{% endfor %}
{# <p>一共有{{ blogs|length }}篇博文</p> {{ blogs_count }} {# 用于统计blogs中又多少条博文#}
<p>一共有{{ blogs|length }}篇博文</p>
{% endblock %}
blog_with_type.html
{# 删除和base中重复的内容,留下独有的内容,然后分别填充到下面的两个block中 #}
{# 这是页面标题 #}
{% extends 'base.html' %} {# 导入base.html中的内容 #}
{% block title %} {# 用于填充title #}
刘子君的博客 {# 这里因为之前title被包起来了,所以直接用变量即可 #}
{% endblock %}
<hr>
{# 这是页面内容 #}
{% block content %}
<h3>{{ blog_type.type_name }}</h3>
{% for blog in blogs %}
{# <a href="{ % url 'blog_detail' blog.pk % }">#}
<a href="{% url 'blog_detail' blog.pk %}">
<h3>{{blog.title}}</h3>
</a>
{# 管道符表示过滤,这句话意思是对blogcontent中的内容过滤,只剩30字符显示,这里不知为啥起作用了但pycharm识别为错误#}
<p>{{ blog.content|truncatechars:30 }}</p>
{% empty %}
<p>----- 敬请期待,暂无博文 -----</p>
{% endfor %}
{# <p>一共有{{ blogs|length }}篇博文</p> {{ blogs_count }} {# 用于统计blogs中又多少条博文#}
<p>一共有{{ blogs|length }}篇博文</p>
{% endblock %}
全局模板文件夹:
如果有一个新的app(非blog)也想用这里做好的模板文件base.html怎么办?到下面路劲中设置DIRS内容,指向我们存放公共模板文件夹的路径(一般要放在和app同层路径下),然后把base.html放在新的templates文件夹中
最后
修改views.py代码:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。