我的博客开发(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>

image.png
image.png
image.png
修改方法如下:
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 %}

全局模板文件夹:
image.png
如果有一个新的app(非blog)也想用这里做好的模板文件base.html怎么办?到下面路劲中设置DIRS内容,指向我们存放公共模板文件夹的路径(一般要放在和app同层路径下),然后把base.html放在新的templates文件夹中
image.png
image.png
image.png
最后

image.png
修改views.py代码:
image.png



笨小孩
20 声望3 粉丝

你,要怎样度过这一生?有的人二十岁已经死了,有的人七十岁还在发现生命的可能,有人终其一生,不知道自己要的是什么;有人简单执拗,终其一生;忠于自我未必有结果,坚持努力也不一定换来成功,但有天,回望过...