若是咱们有一个后台网站,或者显示我的信息的网站 标题logo,边框等信息的代码都是固定的,只有部分区域是改变,html
咱们若是用Django来写html的话就会重复代码.这时候咱们只要用模板的方式把须要改变的代码块引入,django
增长项目的时候也只须要增长须要插入的代码便可app
以下图咱们要写一个相似的网页:网站
点击已购商品时会出现:url
点击购物车后会出现:spa
:code
左侧菜单是用A标签来写的连接,若是正常来写,咱们有几个连接就要写几个基本内容相同的网页,只是棕色的显示区域内容不一样.如今咱们有新的写法去改变这一现象:htm
1 首先咱们写一个HTML叫base.htmlblog
<!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里去写其余的代码:
1 from django.shortcuts import render,HttpResponse 2 3 # Create your views here. 4 5 def buy(req): 6 return render(req,"buy.html") 7 8 def base(req): 9 return render(req,"base.html") 10 11 def collection(req): 12 return render(req, "collection.html") 13 14 def shoppingcar(req): 15 return render(req,"shoppingcar.html") 16 17 def mod(req): 18 return render(req,"mod.html")
1 from django.contrib import admin 2 from django.urls import path 3 from t_app import views 4 5 urlpatterns = [ 6 path('admin/', admin.site.urls), 7 path(r'buy/', views.buy), 8 path(r'base/', views.base), 9 path(r'shoppingcar/', views.shoppingcar), 10 path(r'mod/', views.mod), 11 path(r'collection/', views.mod), 12 13 ]