如果我们有一个后台网站,或者显示个人信息的网站 标题logo,边框等信息的代码都是固定的,只有部分区域是改变,

我们如果用Django来写html的话就会重复代码.这时候我们只要用模板的方式把需要改变的代码块引入,

增加项目的时候也只需要增加需要插入的代码即可

如下图我们要写一个类似的网页:

点击已购商品时会出现:

点击购物车后会出现:

:

左侧菜单是用A标签来写的链接,如果正常来写,我们有几个链接就要写几个基本内容相同的网页,只是棕色的显示区域内容不同.现在我们有新的写法去改变这一现象:

1 首先我们写一个HTML叫base.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.head{
height: 50px;background-color: steelblue;text-align: center;color: red;font-size: 22px;
}
.center{
height: 800px;
}
.left{
width: 25%;background-color: tan;height: 800px;float: left;
}
.left a{display: block;color: black;font-size: 22px}
.right{
width: 75%;background-color: saddlebrown;height: 800px;float: left;
}
.button{
height: 50px;background-color: steelblue;
}
.buy{
color: darkkhaki;font-size: 30px;
}
</style>
</head>
<body>
<div class="head">我的购物信息</div>
<div class="center">
<div class="left">
<a href="/buy/">已购商品</a>
<a href="/shoppingcar/">购物车</a>
<a href="/collection/">收藏夹</a>
</div>
<div class="right">
{% block rightbox %} {% endblock %}
</div>
</div>
<div class="button">底部栏</div>
</body>
</html>

这里我们发现这里的代码什么都没有多了个{% block rightbox %} 和 {% endblock %} 这就是固定的格式,告诉我们将要把需要引入的代码放入这里 , rightbox 是我们区分代码块起的名字

而这个base.html就是我们的模板网页,我们并不直接访问这个网页

2   我们的左侧菜单里有已购商品 ,购物车,收藏夹,那么我们就需要有3个html文档

现在我们给已购商品写一个buy.html,看看要怎么写:

我们在模板base.html里用了

所以我们还要去写views 和urls里去写其他的代码:

 from django.shortcuts import render,HttpResponse

 # Create your views here.

 def buy(req):
return render(req,"buy.html") def base(req):
return render(req,"base.html") def collection(req):
return render(req, "collection.html") def shoppingcar(req):
return render(req,"shoppingcar.html") def mod(req):
return render(req,"mod.html")
 from django.contrib import admin
from django.urls import path
from t_app import views urlpatterns = [
path('admin/', admin.site.urls),
path(r'buy/', views.buy),
path(r'base/', views.base),
path(r'shoppingcar/', views.shoppingcar),
path(r'mod/', views.mod),
path(r'collection/', views.mod), ]

Django 用模板来节省公共代码,的更多相关文章

  1. Django基础-004 上下文管理器&中间件&前端公共代码复用

    一.上下文管理器 在views中重复使用的代码,可以在上下文管理器中实现 上下文管理器的处理流程如下: 1.先走完views里面的代码,将结果返回给前端 2.然后再将上下文的结果返回给前端 3.上下文 ...

  2. python学习笔记--Django入门二 Django 的模板系统

    为了使网站更干净简洁更容易维护,页面的设计和Python的代码必须分离开.我们可以使用Django的 模板系统 (Template System)来实现这种模式. 几个简单的模板标签(tag):   ...

  3. 第四章:Django 的模板系统(转)

    在之前的章节中,你可能觉得例子中视图返回文本有点不妥.即是, HTML 是直接写在 Python 代码中的.     这种做法会导致这些问题:     要做任何设计上的更改就必须改写 Python 代 ...

  4. 读书笔记 effective c++ Item 44 将与模板参数无关的代码抽离出来

    1. 使用模板可能导致代码膨胀 使用模板是节省时间和避免代码重用的很好的方法.你不需要手动输入20个相同的类名,每个类有15个成员函数,相反,你只需要输入一个类模板,然后让编译器来为你实例化20个特定 ...

  5. Django的模板层

    一 模版简介 你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python代码之中. def current_datetime(request): now ...

  6. Django之模板(T)

    一, 常用语法 Django模板中只需要记两种特殊符号: {{ }}和 {% %} {{ }}表示变量,在模板渲染的时候替换成值,{% %}表示逻辑相关的操作. 一, 变量 语法: {{ 变量名 }} ...

  7. 053.Python前端Django框架模板层

    模板层 一 模板语法之变量 在 Django 模板中遍历复杂数据结构的关键是句点字符, 语法: {{ var_name }} [root@node10 mysite]# cat app01/urls. ...

  8. Django中模板的用法简介

    1. 模板系统的介绍 Django作为一个Web框架,其模板所需的HTML输出静态部分以及动态内容插入 模板由HTML代码和逻辑控制代码构成 Django框架的模板语言的语法格式: {{var_nam ...

  9. Django使用模板后无法找到静态资源文件

    Django使用模板后无法找到静态资源文件 环境配置 Django版本1.11 python版本3.6.2 前言 在编写Django网站的时候,在涉及模板方面,一些简单的例子都没有问题,但这些例子都有 ...

随机推荐

  1. django系列6--Ajax05 请求头ContentType, 使用Ajax上传文件

    一.请求头ContentType ContentType指的是请求体的编码类型,常见的类型共有三种: 1.application/x-www-form-urlencoded 这应该是最常见的 POST ...

  2. button不能添加伪类元素

    今日试了一下button添加伪类元素,结果是不行的前后都叠加在一起 html代码: <button class="form_btn" formType="submi ...

  3. sonarLint和sonarQube

    在线安装和离线装sonarLint https://blog.csdn.net/limm33/article/details/51166840 下载指定版本的sonarLint https://bin ...

  4. BZOJ3786: 星系探索(伪ETT)

    题面 传送门 题解 坑啊--我好像把\(Splay\)的东西全忘光了-- \(ETT\)(\(Euler\ Tour\ Tree\))是一种可以资瓷比\(LCT\)更多功能的数据结构,然而不管是功能还 ...

  5. Python面向对象(构造方法)

    day24 构造方法 特殊作用:在obj=classname()中1.创建对象,2.通过对象执行类中的一个特殊方法. class Bar: def __init__(self): ") de ...

  6. jmeter+ant+jenkins+mac报告优化(二):添加90% Line和QPS

    一.优化内容 1.Summary中只标红Failures数 2.Pages页面按Average Time倒序排序 3.Average Time超过2s标黄显示 4.Pagelist 模块中针对错误和超 ...

  7. Python Socket 编程示例 Echo Server

    简评:我们已经从「Python Socket 编程概览」了解了 socket API 的概述以及客户端和服务器的通信方式,接下来让我们创建第一个客户端和服务器,我们将从一个简单的实现开始,服务器将简单 ...

  8. SpringData JPA实现CRUD,分页与多参数排序

    Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问计数,包括非关系数据库.Map-Reduce 框架.云数据服务等等,SpringData JPA是简化创建 JPA ...

  9. 关于android分辨率兼容问题

    关于手机分辨率相关术语和概念 屏幕尺寸:实际的物理尺寸,屏幕的对角线测量.为了方便,android把所有的屏幕尺寸分为了4个广义的大小:小,正常,大,特大. 屏幕密度:屏幕的物理面积内像素的数量,通常 ...

  10. python 爬虫 黑科技

    1.最基本的抓站 import urllib2 content = urllib2.urlopen('http://XXXX').read() 2.使用代理服务器 这在某些情况下比较有用,比如IP被封 ...