Django – 模板继承

温馨提示: 本文最后更新于2024-10-30 12:25:00,某些文章具有时效性,若有错误或已失效,请在下方 留言或联系 梦幻屋

  1. 创建基础模板
    基础模板通常包含页面的 HTML 结构,如 doctypehtmlheadbody 标签,以及一些公共的 HTML 块,比如导航栏和页脚。
   <!-- base.html -->
   <!DOCTYPE html>
   <html lang="en">
   <head>
       <meta charset="UTF-8">
       <title>{% block title %}My Site{% endblock %}</title>
   </head>
   <body>
       <header>
           <!-- 公共头部内容 -->
       </header>
       <div id="content">
           {% block content %}
           <!-- 默认内容 -->
           {% endblock %}
       </div>
       <footer>
           <!-- 公共页脚内容 -->
       </footer>
   </body>
   </html>
  1. 创建子模板
    子模板继承基础模板,并可以填充或重写基础模板中定义的块(block)。
   <!-- home.html -->
   {% extends "base.html" %}

   {% block title %}Home Page{% endblock %}

   {% block content %}
   <h1>Welcome to the Home Page</h1>
   <p>This is the home page of my site.</p>
   {% endblock %}

在这个例子中,home.html 继承了 base.html,并重写了 titlecontent 块。

  1. 使用子模板
    在你的视图中,你可以像使用普通模板一样使用子模板。
   # views.py
   from django.shortcuts import render

   def home(request):
       return render(request, 'home.html')
  1. 模板中的高级继承
    你可以在子模板中进一步继承另一个模板,或者在一个模板中使用多个继承。
   <!-- base_with_sidebar.html -->
   {% extends "base.html" %}

   {% block content %}
       <div class="main">
           {% block main_content %}
           <!-- 默认主内容 -->
           {% endblock %}
       </div>
       <div class="sidebar">
           {% block sidebar %}
           <!-- 默认侧边栏内容 -->
           {% endblock %}
       </div>
   {% endblock %}

然后你可以创建一个继承 base_with_sidebar.html 的模板,并填充 main_contentsidebar 块。

   <!-- post_detail.html -->
   {% extends "base_with_sidebar.html" %}

   {% block title %}Post Detail{% endblock %}

   {% block main_content %}
   <h1>{{ post.title }}</h1>
   <p>{{ post.content }}</p>
   {% endblock %}

   {% block sidebar %}
   <p>Here is some sidebar content.</p>
   {% endblock %}

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 共2条

请登录后发表评论