Python学习---django模板继承180123
2024-10-19 02:22:30
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> 为每种类型的页面创建独立的模板,例如论坛页面或者图片库。 这些模板拓展相应的区域模板。
最新文章
- 手机游戏渠道SDK接入工具项目分享(二)万事开头难
- $.ajax()方法详解
- Kafka简要图解
- [转]UOS 中的虚拟网络设备
- android shape的使用 边框
- MySQL5日期类型DATETIME和TIMESTAMP相关问题详解
- urlwrite伪静态(SAE、PHP、JSP)
- Js节点属性与方法
- Oracle 11g透明网关连接Sqlserver 2000
- 0_Simple__simpleAssert + 0_Simple__simpleAssert_nvrtc
- Django中url的生成过程详解
- 联想G510F1F2..功能键和FN+功能键反过来
- centos6.7不联网的情况下安装配置本地yum源
- 2.5 Visio2007不规则图形填充
- python实现桶排序算法
- 关于在使用sparksql写程序是报错以及解决方案:org.apache.spark.sql.AnalysisException: Duplicate column(s): ";name"; found, cannot save to file.
- LIS (DP)_代码
- Linux中Nginx安装与配置详解
- 基于IE的多标签的浏览器-世界之窗2.4
- 【Unity】10.3 创建类人动画角色