Python学习---django模板继承180123

django模板继承  --20180123

a.include 模板标签

b.extend(继承)模板标签

------include 模板标签

该标签允许在(模板中)包含其它的模板的内容。 标签的参数是所要包含的模板名称,可以是一个变量,也可以是用单/双引号硬编码的字符串。 每当在多个模板中出现相同的代码时,就应该考虑是否要使用 {% include %} 来减少重复。

------extend(继承)模板标签

先构造一个基础框架模板,而后在其子模板中对它所包含站点公用部分和定义块进行重载。

settigs.py

‘DIRS‘: [os.path.join(BASE_DIR, ‘templates‘)],  # 设置templates的路径为Django以前版本
# ‘DIRS‘: [],      # 注释掉该行,此为Django 2.0.1最新版本
# ‘django.middleware.csrf.CsrfViewMiddleware‘,
         ...省略默认配置
STATIC_URL = ‘/static/‘
TEMPLATE_DIRS = (os.path.join(BASE_DIR,  ‘templates‘),)  # 原配置
# 静态资源文件
STATICFILES_DIRS = (os.path.join(BASE_DIR, "statics"),)   # 现添加的配置,这里是元组,注意逗号

templates/base.html

<!DOCTYPE html>
<html lang="en">
<head>    <meta charset="UTF-8">
    <style>
        .page-header{ height:50px; background-color: turquoise; width: 100%;   }
        .page-body .menu{ height: 400px; background-color: orange;width: 20%; float: left; }
        .page-body .content{ height:400px; background-color: palevioletred; width:80%;float: left;}
        .page-footer{height: 50px;clear: both;width: 100%; background-color: rebeccapurple; }
    </style>
</head>
<body>
<div>
    <div class="page-header"></div>
    <div class="page-body">
        <div class="menu">
            <a href="/order/">订单</a>
            <a href="/shopping/">购物车</a>
        </div>
        {% block content %}   {# 这里使用block占用了一个block,同时给这个block设置了一个名称#}
        {% endblock %}
    </div>
    <div class="page-footer"></div>
</div></body>
</html>

templates/order.html

{% extends "base.html" %}  {# 这里继承了基础类,必须放在首行 #
{% block content %}       {# 根据block的名称content去填充新的内容 #}
     <div class="content">
        订单
    </div>
{% endblock %}

templates/shopping.html

{% extends "base.html" %} {# 这里继承了基础类,必须放在首行 #}
{% block content %}       {# 根据block的名称content去填充新的内容 #}
     <div class="content">
        购物车
    </div>
{% endblock %}

mysite2/urls.py

from django.contrib import admin
from django.urls import path
from blog import views
from django.conf.urls import url
urlpatterns = [
      # order    -- 订单
url(r‘order/‘, views.order),
 # shopping  -- 购物车
url(r‘shopping/‘, views.shopping),
]

views.py

from django.shortcuts import render, HttpResponse
import datetime
# order
def order(request):
    return render(request, "order.html")
# shopping
def shopping(request):
    return render(request, "shopping.html")

页面显示:

注意:

我们可以通过 {% block.super %} 获取父类的内容

<1> 创建 base.html 模板,在其中定义站点的主要外观感受。 这些都是不常修改甚至从不修改的部分。

<2> 为网站的每个区域创建 base_SECTION.html 模板这些模板对base.html 进行拓展,并包含区域特定的风格与设计。

<3> 为每种类型的页面创建独立的模板,例如论坛页面或者图片库。 这些模板拓展相应的区域模板。

原文地址:https://www.cnblogs.com/ftl1012/p/9399225.html

时间: 2024-11-05 17:32:08

Python学习---django模板继承180123的相关文章

python学习之类的继承

面向对象中一个重要的特性就是继承,继承的好处就是提高代码的重用率,减少不必要的代码.继承是父类与子类的关系,当子类继承了父类后,就具有了父类的所有变量和方法.在python中定义继承的语法是:class 派生类名(基类名).在使用python的继承时需要注意一下几点: (1)当父类定义了__init__()初始化方法时,子类不会自动调用,而需要我们显示调用,如果我们要扩展父类的变量,可以在__init__()添加参数. (2)在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量

[python]学习Django中的python知识拾遗

1.使用正则表达式进行URL匹配 urlpatterns = patterns('', # ... (r'^time/plus/\d+/$', hours_ahead), # ... ) (1)使用r代表字符串是原始字符串,表示python不会对立面的反斜杠\转义符进行处理,使用正则表达式一般使用原始字符串. (2)使用\d+表示匹配1个或者多个数字,如果限定只能使用两个数字,则\d{1,2}. (3)如果要把正则表达式的某个数作为参数,则用小括号包起来,如(r'^time/plus/(\d{1

[py]django模板继承

参考 django模板继承 通过搞一个base.html 这个base.html可以包含两类 block片断 其他html 然后index.html继承base.html 继承关系如图 代码体现template继承 关键字 - 预设片断模板- 留坑 {% block title %} 默认标题 {% endblock %} - 预包含html文件 {% include 'nav.html' %} - index.html继承base.html {% extends 'base.html' %}

【Web】Javascript、Python、Django模板配合处理URL Encode

1.JS function relaunch(id, service, submit) { var username = $("#id_username").text(); /* if (submit != username && submit != "null") { addAlert("Warning: " + "Permission Denied, Only Your Private Deploy Allowed

Django模板继承下的动态数据传递—上下文处理器

参考:http://www.caodahua.cn/detail/3/ 模板继承可以减少页面内容的重复定义,实现页面内容的重用.我的个人博客右侧的导航栏都是继承base页面从而让代码得到最大程度的复用.但是当父模板中有动态数据的话,这些动态数据在子模版中是不会显示的.我们可以通过自定义上下文处理器来解决. Django上下文处理器(Context Processor) 上下文处理器是接收HttpRequest为参数并返回dict形式的数据的函数.它的主要用途是将所有模板共享的公共数据添加到上下文

Django模板继承

base.html <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>{% block title %}{% endblock %}</title></head> <body><h1>模板继承</h1>{% block content %}{% endbloc

Django模板继承和引用

一.模板继承 1.模板继承可以在创建一个基本“骨架”后,被其它子模板继承并覆盖,通过修改基础模板可以修改子模板中的所有框架 2.在模板teacher文件夹下创建基础模板 {% block xxx}与{% block }是成对出现的 该标签的功能是为子模板声明该出内容可以被覆盖重写 不写则为基础模板的内容 3.在student_list页面继承基础模板 首行的{% extends 'teacher/base.html'}必须写 其余内容按常规写在{% block }{% endblock }中 二

python测试开发django-7.django模板继承(block和extends)

前言 打开一个网站时候,点导航栏切换到不同的页面,发现导航部分是不变的,只是页面的主体内容变了,于是就可以写个母模板,其它的子页面继承母模板就可以了. 母模板 可以在母模板中添加多个块标签,每个块标签取不同的名称,如下格式,content是块标签名称 {% block content %} {% endblock content %} <!DOCTYPE html> <html lang="en"> <head> <meta charset=&

Python学习---Django的新工程设置模板

该模板完全可以在创建好新工程后进行部分代码替换 创建app01的  python startapp app01 创建static子目录 settings.py """ Django settings for user_manager project. Generated by 'django-admin startproject' using Django 2.0.1. For more information on this file, see https://docs.d