若是咱們有一個後臺網站,或者顯示我的信息的網站 標題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 ]