当前位置:   article > 正文

Django进阶之模板继承_django可以进行重复的模板继承吗

django可以进行重复的模板继承吗

Django也有属于自己的模板继承功能。模板继承可以减少页面重复内容的定义,实现页面重用,更加灵活的实现web页面。主要通过block/extends标签来实现。

目录

Block标签

语法

Extends标签

语法

示例

定义父模板

定义子模板

增加详情页

 效果

总结


Block标签

在父模板中预留区域,子模板去填充

语法

{% block 标签名 %}

内容

{% endblock 标签名 %}

Extends标签

继承模板,需要写在模板文件的第一行

语法

{% extends ‘父模板路径’ %}

示例

定义父模板

创建base.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>博客</title>
  6. <style>
  7. #header ul li{
  8. float:left;
  9. list-style:none;
  10. width:50px;
  11. border-left:1px solid #000;
  12. padding-left:20px;
  13. padding-bottom:10px;
  14. }
  15. #header > ul > li.first{
  16. border:none;
  17. }
  18. #content {
  19. height:80%;
  20. clear:both;
  21. }
  22. #footer {
  23. text-align:center;
  24. }
  25. </style>
  26. </head>
  27. <body>
  28. <div id="header">
  29. <ul>
  30. <li class="first"><a href="#">推荐</a></li>
  31. <li><a href="#">Python</a></li>
  32. <li><a href="#">PHP</a></li>
  33. <li><a href="#">Java</a></li>
  34. <li><a href="#">Go</a></li>
  35. </ul>
  36. </div>
  37. <div id="content">
  38. {% block content %}
  39. {% endblock content %}
  40. </div>
  41. <div id="footer">
  42. Powered by: xx网站 Copyright © 2023 Django3.0
  43. </div>
  44. </body>
  45. </html>

定义子模板

创建首页main.html

  1. {% extends 'blog/base.html' %}
  2. {% block content %}
  3. <h2>文章列表</h2>
  4. <ul>
  5. <li><a href="#">Django框架之模板标签</a></li>
  6. <li><a href="#">Django框架之模板继承</a></li>
  7. </ul>
  8. {% endblock content %}

添加路由

path('extend1', views.extend1, name='extend1')

创建视图

  1. def extend1(request):
  2. return render(request, 'blog/content.html')

增加详情页

创建detail.html

  1. {% extends 'blog/base.html' %}
  2. {% block content %}
  3. <h2>Django框架之模板继承</h2>
  4. <p>内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容 <br>
  5. 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容 <br>
  6. 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容 <br>
  7. 内容内容内容内容内容。。。。。。</p>
  8. {% endblock content %}

设置路由

path('extendDetail/<int:id>', views.extendDetail, name='extendDetail'),

配置视图

  1. def extendDetail(request, id):
  2. return render(request, 'blog/detail.html')

修改列表链接

  1. <li><a href="{% url 'app:extendDetail' 1 %}">Django框架之模板标签</a></li>
  2. <li><a href="{% url 'app:extendDetail' 2 %}">Django框架之模板继承</a></li>

 效果

总结

主要通过block/extends标签来实现。如何应用模板继承写了列表和详情使用的两个例子。具体使用,只需要结合这个例子来实现即可。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/769129
推荐阅读
相关标签
  

闽ICP备14008679号