Python Django 之模板继承详解(extends)

文章目录

  • [1 概述](#1 概述)
    • [1.1 目的](#1.1 目的)
    • [1.2 标签:block、extends](#1.2 标签:block、extends)
    • [1.3 目录结构](#1.3 目录结构)
  • [2 templates 目录](#2 templates 目录)
    • [2.1 base.html:父页面](#2.1 base.html:父页面)
    • [2.2 login.html:子页面](#2.2 login.html:子页面)
  • [3 其它代码](#3 其它代码)

1 概述

1.1 目的

  • 模板继承 和 类继承 的目的是一样的,都是为了提高代码的复用

1.2 标签:block、extends

python 复制代码
# 父 Html 中,block:定义语句块,供 子页面使用
{% block xx %}

{% endblock %}


# 子 Html 中,extends:继承父页面
{% extends "xx.html" %}

1.3 目录结构

2 templates 目录

2.1 base.html:父页面

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %} 基础页面 {% endblock %}</title>
    {% block css %} {% endblock %}
</head>
<body>
    <a href="https://www.baidu.com/"> 百度一下 </a>

    {% block content %} {% endblock %}

    {% block js %} {% endblock %}
</body>
</html>

2.2 login.html:子页面

html 复制代码
{% extends "base.html" %}

{% block title %}
    登录首页
{% endblock %}

{% block css %}
    <style>
        p {color: red}
    </style>
{% endblock %}

{% block content %}
    <p>姓名:<input type="text" placeholder="姓名"></p>
    <p>密码:<input type="text" placeholder="密码"></p>
{% endblock %}

{% block js %}
    <script>alert('欢迎登录')</script>
{% endblock %}

登录效果:

3 其它代码

3.1 settings.py

python 复制代码
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # 模板的位置
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

3.2 views.py

python 复制代码
from django.shortcuts import render, HttpResponse, redirect

def login(request):
	return render(request, "login.html")

3.3 urls.py

python 复制代码
from django.urls import path

from app01 import views

urlpatterns = [
    path('login/', views.login),
]
相关推荐
_Jimmy_27 分钟前
AI应用开发工程师面试题库
人工智能·python·深度学习·机器学习·知识图谱
用户83562907805127 分钟前
Python 实现 Excel 命名范围(Named Range)的创建与管理
后端·python
dreamer_83991 小时前
AI智能合同比对系统:从零搭建实战教程
人工智能·python
AOwhisky2 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
观察员2 小时前
带你用一个 Python 图书系统,通关封装继承多态
python
林泽毅4 小时前
PyTRIO快速入门(一):概念、推理与训练
人工智能·python·深度学习·机器学习·语言模型
admin and root4 小时前
「移动安全」安卓APP 反编译&frida脱壳技巧分享
android·开发语言·python·web安全·微信小程序·移动安全·攻防演练
雪的季节4 小时前
Python基础5-18
开发语言·python
学术小李4 小时前
基于Pytorch,如何用CUDA自己写算子?(一)
人工智能·pytorch·python
ShirleyWang0125 小时前
让headlamp控制台能访问
linux·服务器·python·k8s·k3s