模板扩展

    通过这种方法,当你想使用同样的信息或布局,或者你想改变某些模板内容时,你不必在每个文件中都重复着相同的代码。你仅仅只需要改变一个文件,而不是所有的。

    一个基础模板是最重要的模板,你扩展到你网站的每一页。

    让我们创建一个文件到blog/templates/blog/:

    1. {% load staticfiles %}
    2. <html>
    3. <head>
    4. <title>Django Girls blog</title>
    5. <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
    6. <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
    7. <link href='//fonts.googleapis.com/css?family=Lobster&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
    8. <link rel="stylesheet" href="{% static 'css/blog.css' %}">
    9. </head>
    10. <body>
    11. <h1><a href="/">Django Girls Blog</a></h1>
    12. </div>
    13. <div class="row">
    14. <div class="col-md-8">
    15. {% for post in posts %}
    16. <div class="post">
    17. <div class="date">
    18. {{ post.published_date }}
    19. </div>
    20. <p>{{ post.text|linebreaksbr }}</p>
    21. </div>
    22. {% endfor %}
    23. </div>
    24. </div>
    25. </div>
    26. </body>
    27. </html>

    然后在base.html中,替换你所有的 (所有的在<body></body>之间的内容)像这样:

    用如下内容替换所有在 {% for post in posts %}{% endfor %}之间的代码:

    1. {% block content %}
    2. {% endblock %}

    这是什么意思呢? 你刚刚创建了一个block(块),这个模板标签允许你在其中插入扩展自base.html的模板的HTML代码。 我们一会儿将给你展示这个如何使用。

    然后现在将这行加到文件的开始:

    1. {% extends 'blog/base.html' %}

    {% raw %}这意味着我们在 post_list.html模板文件中扩展了 base.html 模板的内容。 还有一件事:将所有(除了我们刚刚加入的那行) 内容置于{% block content %}{% endblock %}之间。。 像这样:{% endraw %}

    好了,就是它了!检查你的网站还能正常工作:)