【Django 网页Web开发】06. 模板继承的主题导航栏案例 高效开发 便捷维护(保姆级图文)

目录

    • 实现效果
    • 模板继承
    • moban.html 模板页面
    • 子页面
      • test1.html
      • test2.html
    • url.py
    • view.py
    • 常见格式
    • 总结


欢迎关注 『Django 网页Web开发』 系列,持续更新中
欢迎关注 『Django 网页Web开发』 系列,持续更新中

实现效果

  • 很多页面都有导航栏,以CSDN为例子,我们在开发时虽然可以在每一个html页面模板中cv复制黏贴同一份导航栏代码,但是代码冗余不说,也难以维护(修改一次就要给所有的页面都修改一次)
  • 模板继承主要作用是让我们的所有页面复用共同的代码,也可以是共同调用的静态文件(js png 等内容)
    【Django 网页Web开发】06. 模板继承的主题导航栏案例 高效开发 便捷维护(保姆级图文)_第1张图片

模板继承

【Django 网页Web开发】06. 模板继承的主题导航栏案例 高效开发 便捷维护(保姆级图文)_第2张图片

首先确定我们的页面框架。
问几个问题:

  1. 是不是每个html页面都需要写一遍调用js和插件的代码?
  2. 页面有没有公共部分可能需要代码复用?
  3. 我们是不是需要一个标题导航栏部分?
    解决办法:
  • 建立一个公共的标题导航栏页面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>Titletitle>
    <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>页面1title>
    head>
    <body>
    <h1>页面1的 h1. Bootstrap headingh1>

    <nav aria-label="Page navigation">
        <ul class="pagination">
            <li>
                <a href="#" aria-label="Previous">
                    <span aria-hidden="true">«span>
                a>
            li>
            <li><a href="#">1a>li>
            <li><a href="#">2a>li>
            <li><a href="#">3a>li>
            <li><a href="#">4a>li>
            <li><a href="#">5a>li>
            <li>
                <a href="#" aria-label="Next">
                    <span aria-hidden="true">»span>
                a>
            li>
        ul>
    nav>
    body>
    html>
{% endblock %}

【Django 网页Web开发】06. 模板继承的主题导航栏案例 高效开发 便捷维护(保姆级图文)_第3张图片

test2.html

{% extends 'moban.html' %}
{% block content %}
    {#  下方编写本页面的内容  #}
    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>页面1title>
    head>
    <body>
    <h2>页面2的 h2. Bootstrap headingh2>

    <a class="btn btn-default" href="#" role="button">Linka>
    <button class="btn btn-default" type="submit">Buttonbutton>
    <input class="btn btn-default" type="button" value="Input">
    <input class="btn btn-default" type="submit" value="Submit">

    body>
    html>
{% endblock %}

【Django 网页Web开发】06. 模板继承的主题导航栏案例 高效开发 便捷维护(保姆级图文)_第4张图片


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>Titletitle>
    <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开发』 系列,持续更新中
【更多内容敬请期待】


你可能感兴趣的:(#,Django网页Web开发,python,前端,django,javascript)