【Django2.0教程】09.模版巢狀
阿新 • • 發佈:2019-01-24
1、一個網站有很多相似的網頁,這樣就可以建立一個base.html在templates資料夾下
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <title>{% block title %}{% endblock %}</title> </head> <body> <div> <a href="{% url 'home' %}"> <h2>個人部落格網站</h2> </a> </div> <hr> {% block content %}{% endblock %} </body> </html>
2、有了這個base.html,其他三個模板就可以巢狀進來
blog_list.html
{% extends 'base.html' %} {# 頁面標題 #} {% block title %} 我的部落格網站 {% endblock %} {# 頁面內容 #} {% block content %} {% for blog in blogs %} <a href="{% url 'blog_detail' blog.pk %}"> <h3>{{ blog.title }}</h3> </a> <p>{{ blog.content|truncatechars:20 }}</p> {% empty %} <p>---暫無部落格,敬請期待---</p> {% endfor %} <p>一共有{{ blogs|length }} 篇部落格</p> {% endblock %}
blog_detail.html
{% extends 'base.html' %} {# 頁面標題 #} {% block title %} {{ blog.title }} {% endblock %} {# 頁面內容 #} {% block content %} <h3>{{ blog.title }}</h3> <p>作者:{{ blog.author }}</p> <p>發表日期:{{ blog.created_time|date:"Y-m-d"}}</p> <p>分類: <a href="{% url 'blogs_with_type' blog.blog_type.pk %}"> {{ blog.blog_type }} </a> </p> <p>{{ blog.content }}</p> {% endblock %}
blogs_with_type.html
{% extends 'base.html' %}
{# 頁面標題 #}
{% block title %}
{{ blog_type.type_name }}
{% endblock %}
{# 頁面內容 #}
{% block content %}
<h2>{{ blog_type.type_name }}</h2>
{% for blog in blogs %}
<a href="{% url 'blog_detail' blog.pk %}">
<h3>{{ blog.title }}</h3>
</a>
<p>{{ blog.content|truncatechars:20 }}</p>
{% empty %}
<p>---暫無部落格,敬請期待---</p>
{% endfor %}
<p>一共有{{ blogs|length }} 篇部落格</p>
{% endblock %}
3、base.html位置的更換
在mysite資料夾力新建templates資料夾,並且在settings.py中更改
'DIRS': [os.path.join(BASE_DIR,'templates')],
然後將blog/templates裡面額base.html剪下到mysite/templates資料夾中。並在mysite/templates中新建blog,把blog/templates裡的其他幾個html也剪下到這裡來,然後修改views.py中每個檢視的返回值中的html名稱 ,在每個前面加上blog/,這樣就可以訪問啦!