经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Django » 查看文章
Django模板继承与模板的导入实例详解
来源:jb51  时间:2022/3/7 11:13:14  对本文有异议

一:模版的继承

1.什么是模板继承?

你需要事先在你想要使用的主页面上划定区域做好标记,之后在子页面继承的时候你就可以使用在主页面划定的区域,也就意味着,如果你不划定任何区域,那么你子页面将无法修改主页面内容

2.使用继承流程原理

1.先在你想要继承的主页面上通过bolck划定你将来可能要改的区域,并做好标记

2.在子页面上继承extends,利用block自动提示选取你想要修改的内容区域标记名称

3.在子页面extends中写你要修改主页面标记区的代码

4.然后就可以让子页面的修改内容渲染到主页面的划定区域上

你们有没有见过一些网站

这些网站页面整体都大差不差 只是某一些局部在做变化

3.模板继承语法

  1. 1.继承
  2. {% extends '模版页面名' %}
  3.  
  4. 2.局部修改
  5. # 1.你需要先去模版页面中划定可以被修改的区域
  6. {% block '名字' %}
  7. 模版内容(666
  8. {% endblock %}
  9. # 2.子页面中即成了模版页面之后 就可以根据名字修改
  10. {% block '名字' %}
  11. 子版内容
  12. 子版页面吃了可以自己写自己的之外 还可以继续使用模版的内容
  13. {{ block.super }} 666
  14. {{ block.super }} 666
  15. {{ block.super }} 666
  16. {{ block.super }} 666
  17. {% endblock %}
  1. 4.一般情况下模版页面上应该至少有三块可以被修改的区域
  2. 1.css区域
  3. 2.html区域
  4. 3.js区域
  5. 每一个子页面就都可以有自己独有的css代码 html代码 js代码
  6. 互相之间 互不干扰
  7. # 子页面css
  8. {% block css %}
  9.  
  10. {% endblock %}
  11.  
  12.  
  13. {% block content %}
  14.  
  15. {% endblock %}
  16.  
  17. # 子页面js
  18. {% block js %}
  19.  
  20. {% endblock %}

二:模板的继承使用

1.案例需求

1.实现用户点击登录右侧局部出现登录页面,点击注册右侧出现注册页面

urls.py

  1. # 模板的继承
  2. url(r'^home/', views.home),
  3. # 创建login路由
  4. url(r'^login/', views.login),
  5. # 创建reg路由
  6. url(r'^reg/', views.reg),

views.py

  1. def home(request):
  2. return render(request, 'home.html')
  3.  
  4.  
  5.  
  6. def login(request):
  7. return render(request, 'login.html')
  8.  
  9.  
  10. def reg(request):
  11. return render(request, 'reg.html')

home.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <!--bootstrap引入 CSS CDN-->
  7. <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
  8. <!--jQuery引入 CDN-->
  9. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  10. <!--Bootstrap引入 Js CDN-->
  11. <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
  12. {% block css %}
  13.  
  14. {% endblock %}
  15. </head>
  16. <body>
  17. {#导航条#}
  18. <nav class="navbar navbar-inverse">
  19. <div class="container-fluid">
  20. <!-- Brand and toggle get grouped for better mobile display -->
  21. <div class="navbar-header">
  22. <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
  23. <span class="sr-only">Toggle navigation</span>
  24. <span class="icon-bar"></span>
  25. <span class="icon-bar"></span>
  26. <span class="icon-bar"></span>
  27. </button>
  28. <a class="navbar-brand" href="#">Brand</a>
  29. </div>
  30.  
  31. <!-- Collect the nav links, forms, and other content for toggling -->
  32. <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
  33. <ul class="nav navbar-nav">
  34. <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
  35. <li><a href="#">Link</a></li>
  36. <li class="dropdown">
  37. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
  38. <ul class="dropdown-menu">
  39. <li><a href="#">Action</a></li>
  40. <li><a href="#">Another action</a></li>
  41. <li><a href="#">Something else here</a></li>
  42. <li role="separator" class="divider"></li>
  43. <li><a href="#">Separated link</a></li>
  44. <li role="separator" class="divider"></li>
  45. <li><a href="#">One more separated link</a></li>
  46. </ul>
  47. </li>
  48. </ul>
  49. <form class="navbar-form navbar-left">
  50. <div class="form-group">
  51. <input type="text" class="form-control" placeholder="Search">
  52. </div>
  53. <button type="submit" class="btn btn-default">Submit</button>
  54. </form>
  55. <ul class="nav navbar-nav navbar-right">
  56. <li><a href="#">Link</a></li>
  57. <li class="dropdown">
  58. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
  59. <ul class="dropdown-menu">
  60. <li><a href="#">Action</a></li>
  61. <li><a href="#">Another action</a></li>
  62. <li><a href="#">Something else here</a></li>
  63. <li role="separator" class="divider"></li>
  64. <li><a href="#">Separated link</a></li>
  65. </ul>
  66. </li>
  67. </ul>
  68. </div><!-- /.navbar-collapse -->
  69. </div><!-- /.container-fluid -->
  70. </nav>
  71. {#左右不留白#}
  72. <div class="container-fluid">
  73. {#row 划分12份区域#}
  74. <div class="row">
  75. {# 左侧分三份#}
  76. <div class="col-md-3">
  77. {#侧边栏 #}
  78. <div class="list-group">
  79. <a href="/home/" class="list-group-item active">
  80. 首页
  81. </a>
  82. <a href="/login/" class="list-group-item">登录</a>
  83. <a href="/reg/" class="list-group-item">注册</a>
  84. </div>
  85. </div>
  86. <div class="col-md-9">
  87. {# 面板#}
  88. <div class="panel panel-primary">
  89. <div class="panel-heading">
  90. <h3 class="panel-title">Panel title</h3>
  91. </div>
  92. <div class="panel-body">
  93. {# 划分区域 不影响区域展示,仅仅是标记 区域名#}
  94. {% block content %}
  95. {# 巨幕#}
  96. <div class="jumbotron">
  97. <h1>Hello, world!</h1>
  98. <p>...</p>
  99. <p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p>
  100. </div>
  101. {% endblock %}
  102.  
  103. </div>
  104. </div>
  105. </div>
  106. </div>
  107.  
  108. </div>
  109. {% block js %}
  110.  
  111. {% endblock %}
  112. </body>
  113. </html>

login.html

  1. {#login 页面全部清空#}
  2.  
  3. {#login继承home主页面#}
  4. {% extends 'home.html' %}
  5.  
  6. {#子页面的css代码 #}
  7. {% block css %}
  8. <style>
  9. h1 {
  10. color: red;
  11. }
  12. </style>
  13. {% endblock %}
  14.  
  15. {#block 指定选择主页面划分的(区域) 可以进行修改 #}
  16. {% block content %}
  17. <h1 class="text-center">登录页面</h1>
  18. <form action="">
  19. <p>username: <input type="text" class="form-control"></p>
  20. <p>password: <input type="text" class="form-control"></p>
  21. <input type="submit" class="btn btn-success">
  22. </form>
  23. {% endblock %}
  24.  
  25. {# 子页面的js代码 #}
  26. {% block js %}
  27. <script>
  28. alert('登录页面')
  29. </script>
  30. {% endblock %}

reg.html

  1. {#reg页面全部清空#}
  2.  
  3. {#reg继承home主页面#}
  4. {% extends 'home.html' %}
  5.  
  6. {#子页面的css代码 #}
  7. {% block css %}
  8. <style>
  9. h1 {
  10. color: seagreen;
  11. }
  12. </style>
  13. {% endblock %}
  14.  
  15. {#block 指定选择主页面划分的(区域) 可以进行修改 #}
  16. {% block content %}
  17. <h1 class="text-center">注册页面</h1>
  18. <form action="">
  19. <p>username: <input type="text" class="form-control"></p>
  20. <p>password: <input type="text" class="form-control"></p>
  21. <input type="submit" class="btn btn-danger">
  22. </form>
  23. {% endblock %}
  24.  
  25. {# 子页面的js代码 #}
  26. {% block js %}
  27. <script>
  28. alert('注册')
  29. </script>
  30. {% endblock %}

2.总结模板继承

一般情况下 模版的页面上划定的区域越多 那么该模版的扩展性就越高
但是如果太多 那还不如自己直接写

三:模版的导入

1.模板导入

将页面的某一个局部当成模块的形式
哪个地方需要就可以直接导入使用即可

2.模板导入格式

  1. {% include '导入html文件名' %}

3.模板导入使用

sss.html

  1. <h1>我是sss.html页面</h1>

login.html子页面

  1. {% endblock %}
  2.  
  3. {#block 指定选择主页面划分的(区域) 可以进行修改 #}
  4. {% block content %}
  5. <h1 class="text-center">登录页面</h1>
  6. <form action="">
  7. <p>username: <input type="text" class="form-control"></p>
  8. <p>password: <input type="text" class="form-control"></p>
  9. <input type="submit" class="btn btn-success">
  10. </form>
  11.  
  12. <p>模板的导入</p>
  13. {% include 'sss.html' %}
  14.  
  15. {% endblock %}

4.使用结果

总结 

到此这篇关于Django模板继承与模板导入的文章就介绍到这了,更多相关Django模板继承与模板导入内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号