如果我们有一个后台网站,或者显示个人信息的网站 标题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博客

    https://blog.csdn.net/chengqiuming/article/category/8453874 杜塞的个人网站 https://www.dusaiphoto.com/ 追梦人物 ...

  2. [多线程] Thread

    多线程 概述 单任务处理:一个任务完成后才能进行下一个任务. 多任务处理:CPU分时操作,每个任务看似同时运行. 进程 应用程序的一个运行实例,包含程序所需资源的内存区域,是操作系统进行资源分配的单元 ...

  3. 大咖分享 | 一文解锁首届云创大会干货——下篇(文末附演讲ppt文件免费下载)

    本文承接上一篇:大咖分享 | 一文解锁首届云创大会干货--上篇(文末附演讲ppt文件免费下载),第一届云创大会留下干货太多,这里追加下篇,同样,文末提供大咖们的干货分享,点击附件可免费下载.     ...

  4. Amazon新一代云端关系数据库Aurora(下)

    本文由  网易云发布. 作者:郭忆 本篇文章仅限内部分享,如需转载,请联系网易获取授权. 故障恢复 MySQL基于Check point的机制,周期性的建立redo log与数据页的一致点.一旦数据库 ...

  5. kvm虚拟化之convirt集中管理平台搭建

    情况说明: (1)本文采用OEL6.3x64操作系统,需要有KVM安装环境.(2)convirt2.1.1采用源码方式安装,convirt环境分别两部分,一部分是cms,用于管理kvm/xen虚拟主机 ...

  6. guzzle 简单使用记录

    用 guzzle 发送一个包含指定请求头,请求体的 post 请求,并获取指定内容: <?php include_once "guzzle.phar"; use Guzzle ...

  7. java的string和==和equals和hashcode简单理解

    String s1= "abc"; s1是引用变量,在栈里面,如果java的String常量池中没有abc,则开拓一块区域存abc,s1指向常量池中的abc: String s2= ...

  8. jquery 通过attr获取属性只有一个值的解决

    var a = []; $($('select.list[data-target="' + target + '"]').find("option:selected&qu ...

  9. Make ISO安装ArchLinux加Cinnamon

    Arch安装一直对大家对普通用户来說一直很难.国外大神为Arch安装进行了优化提供了更方便的安装方式 官网:http://www.evolutionlinux.com/ 以下爲个人理解,供大家参考. ...

  10. Haproxy搭建Web群集

    一.Haproxy与LVS LVS不支持正则处理,不能实现动静分离,对于大型网站,LVS的实施配置复杂,维护成本相对较高 Harpoxy是一款可提供高可用性,负载均衡.及基于TCP和HTTP应用的代理 ...