目录
- 实现效果
- 模板继承
- moban.html 模板页面
- 子页面
- test1.html
- test2.html
- url.py
- view.py
- 常见格式
- 总结
欢迎关注 『Django 网页Web开发』 系列,持续更新中
欢迎关注 『Django 网页Web开发』 系列,持续更新中
实现效果
- 很多页面都有导航栏,以CSDN为例子,我们在开发时虽然可以在每一个html页面模板中cv复制黏贴同一份导航栏代码,但是代码冗余不说,也难以维护(修改一次就要给所有的页面都修改一次)
- 模板继承主要作用是让我们的所有页面复用共同的代码,也可以是共同调用的静态文件(js png 等内容)
模板继承
首先确定我们的页面框架。
问几个问题:
- 是不是每个html页面都需要写一遍调用js和插件的代码?
- 页面有没有公共部分可能需要代码复用?
- 我们是不是需要一个标题导航栏部分?
解决办法:
-
建立一个公共的标题导航栏页面layout.html,写入每个页面都需要调用的静态文件,其他页面只需要调用这个公共的页面作为自身的一部分即可。既能代码复用也能创造出一片公共区域。
-
其他页面调用公共页面的方法,实现模板继承,其他页面的编写内容只是模板的block content部分的内容
-
模板页面尾部添加
<div>
{% block content %}{% endblock %}
</div>
- 子页面头部添加
{% extends 'layout.html' %}
- 子页面尾部添加
{% endblock %}
moban.html 模板页面
下面引用了jquery-3.6.0和bootstrap-3.4.1,也用了bootstrap-3.4.1的部分组件
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1/css/bootstrap.min.css' %}">
</head>
<body>
<a class="navbar-brand" href="/depart/list/">我是模板导航栏 </a>
<div>
{% block content %}{% endblock %}
</div>
{#导入jquery和bootstrap,注意要先导入js再导入jquery,顺序的问题#}
<script src="{% static 'js/jquery-3.6.0.min.js' %}"></script>
<script src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></script>
</body>
</html>
子页面
test1.html
{% extends 'moban.html' %}
{% block content %}
{# 下方编写本页面的内容 #}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>页面1</title>
</head>
<body>
<h1>页面1的 h1. Bootstrap heading</h1>
<nav aria-label="Page navigation">
<ul class="pagination">
<li>
<a href="#" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li>
<a href="#" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</nav>
</body>
</html>
{% endblock %}
test2.html
{% extends 'moban.html' %}
{% block content %}
{# 下方编写本页面的内容 #}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>页面1</title>
</head>
<body>
<h2>页面2的 h2. Bootstrap heading</h2>
<a class="btn btn-default" href="#" role="button">Link</a>
<button class="btn btn-default" type="submit">Button</button>
<input class="btn btn-default" type="button" value="Input">
<input class="btn btn-default" type="submit" value="Submit">
</body>
</html>
{% endblock %}
url.py
from django.urls import path
from app01 import views
urlpatterns = [
path('test1/', views.test1),
path('test2/', views.test2),
]
view.py
from django.shortcuts import render, redirect
from app01 import models
def test1(request):
return render(request, "test1.html")
def test2(request):
return render(request, "test2.html")
常见格式
定义目版:layout.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="{% static 'plugin...min.css' %}">
{% block css %}{% endblock %}
</head>
<body>
<h1>标题</h1>
<div>
{% block content %}{% endblock %}
</div>
<h1>底部</h1>
<script src="{% static 'js/jquery-3.6.0.min.js' %}"></script>
{% block js %}{% endblock %}
</body>
</html>
继承母版:
{% extends 'layout.html' %}
{% block css %}
<link rel="stylesheet" href="{% static 'pluxxx.css' %}">
<style>
...
</style>
{% endblock %}
{% block content %}
<h1>首页</h1>
{% endblock %}
{% block js %}
<script src="{% static 'js/jqxxxin.js' %}"></script>
{% endblock %}
总结
大家喜欢的话,给个👍,点个关注!给大家分享更多有趣好玩的Python 网页Web开发知识!
版权声明:
发现你走远了@mzh原创作品,转载必须标注原文链接
Copyright 2023 mzh
Crated:2023-3-1
欢迎关注 『Django 网页Web开发』 系列,持续更新中
欢迎关注 『Django 网页Web开发』 系列,持续更新中
【更多内容敬请期待】