Django - ระบบเทมเพลต
Django ช่วยให้สามารถแยก python และ HTML ได้โดย python จะไปในมุมมองและ HTML จะอยู่ในเทมเพลต ในการเชื่อมโยงทั้งสองอย่าง Django อาศัยฟังก์ชันการแสดงผลและภาษาเทมเพลต Django
ฟังก์ชัน Render
ฟังก์ชันนี้รับสามพารามิเตอร์ -
- Request - คำขอเริ่มต้น 
- The path to the template - นี่คือเส้นทางที่สัมพันธ์กับตัวเลือก TEMPLATE_DIRS ในตัวแปรโปรเจ็กต์ settings.py 
- Dictionary of parameters- พจนานุกรมที่มีตัวแปรทั้งหมดที่จำเป็นในเทมเพลต คุณสามารถสร้างตัวแปรนี้หรือคุณสามารถใช้ local () เพื่อส่งผ่านตัวแปรท้องถิ่นทั้งหมดที่ประกาศในมุมมอง 
ภาษาเทมเพลต Django (DTL)
เอ็นจิ้นเทมเพลตของ Django นำเสนอมินิภาษาเพื่อกำหนดเลเยอร์ที่ผู้ใช้หันหน้าเข้าหาแอปพลิเคชัน
การแสดงตัวแปร
ตัวแปรมีลักษณะดังนี้: {{variable}} เทมเพลตแทนที่ตัวแปรโดยตัวแปรที่ส่งโดยมุมมองในพารามิเตอร์ที่สามของฟังก์ชันการแสดงผล มาเปลี่ยน hello.html ของเราเพื่อแสดงวันที่ของวันนี้ -
hello.html
<html>
   
   <body>
      Hello World!!!<p>Today is {{today}}</p>
   </body>
   
</html>จากนั้นมุมมองของเราจะเปลี่ยนเป็น -
def hello(request):
   today = datetime.datetime.now().date()
   return render(request, "hello.html", {"today" : today})ตอนนี้เราจะได้รับผลลัพธ์ต่อไปนี้หลังจากเข้าถึง URL / myapp / hello -
Hello World!!!
Today is Sept. 11, 2015อย่างที่คุณสังเกตเห็นแล้วถ้าตัวแปรไม่ใช่สตริง Django จะใช้เมธอด __str__ เพื่อแสดง และด้วยหลักการเดียวกันนี้คุณสามารถเข้าถึงแอตทริบิวต์วัตถุได้เช่นเดียวกับที่คุณทำใน Python ตัวอย่างเช่นหากเราต้องการแสดงปีวันที่ตัวแปรของฉันจะเป็น: {{today.year}}
ฟิลเตอร์
ช่วยให้คุณแก้ไขตัวแปรในเวลาแสดงผล โครงสร้างตัวกรองมีลักษณะดังต่อไปนี้: {{var | filters}}
Some examples -
- {{string|truncatewords:80}} - ตัวกรองนี้จะตัดสตริงดังนั้นคุณจะเห็นเฉพาะ 80 คำแรกเท่านั้น 
- {{string|lower}} - แปลงสตริงเป็นตัวพิมพ์เล็ก 
- {{string|escape|linebreaks}} - หลีกเลี่ยงเนื้อหาสตริงจากนั้นแปลงตัวแบ่งบรรทัดเป็นแท็ก 
คุณยังสามารถตั้งค่าเริ่มต้นสำหรับตัวแปร
แท็ก
แท็กช่วยให้คุณสามารถดำเนินการต่อไปนี้: if condition, for loop, template inheritance และอื่น ๆ
แท็ก if
เช่นเดียวกับใน Python คุณสามารถใช้ if, else และ elif ในเทมเพลตของคุณ -
<html>
   <body>
   
      Hello World!!!<p>Today is {{today}}</p>
      We are
      {% if today.day == 1 %}
      
      the first day of month.
      {% elif today.day == 30 %}
      
      the last day of month.
      {% else %}
      
      I don't know.
      {%endif%}
      
   </body>
</html>ในเทมเพลตใหม่นี้ขึ้นอยู่กับวันที่ของวันนั้นเทมเพลตจะแสดงค่าที่แน่นอน
แท็กสำหรับ
เช่นเดียวกับ 'if' เรามีแท็ก 'for' ซึ่งทำงานได้เหมือนกับใน Python มาเปลี่ยนมุมมองสวัสดีเพื่อส่งรายการไปยังเทมเพลตของเรา -
def hello(request):
   today = datetime.datetime.now().date()
   
   daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
   return render(request, "hello.html", {"today" : today, "days_of_week" : daysOfWeek})เทมเพลตที่จะแสดงรายการโดยใช้ {{for}} -
<html>
   <body>
      
      Hello World!!!<p>Today is {{today}}</p>
      We are
      {% if today.day == 1 %}
      
      the first day of month.
      {% elif today.day == 30 %}
      
      the last day of month.
      {% else %}
      
      I don't know.
      {%endif%}
      
      <p>
         {% for day in days_of_week %}
         {{day}}
      </p>
		
      {% endfor %}
      
   </body>
</html>และเราควรจะได้รับสิ่งที่ชอบ -
Hello World!!!
Today is Sept. 11, 2015
We are I don't know.
Mon
Tue
Wed
Thu
Fri
Sat
Sunบล็อกและขยายแท็ก
ระบบเทมเพลตไม่สามารถสมบูรณ์ได้หากไม่มีการสืบทอดเทมเพลต ความหมายเมื่อคุณออกแบบเทมเพลตคุณควรมีเทมเพลตหลักที่มีรูที่เทมเพลตของเด็กจะเติมตามความต้องการของเขาเองเช่นเพจอาจต้องใช้ css พิเศษสำหรับแท็บที่เลือก
มาเปลี่ยนเทมเพลต hello.html เพื่อสืบทอดจาก main_template.html
main_template.html
<html>
   <head>
      
      <title>
         {% block title %}Page Title{% endblock %}
      </title>
      
   </head>
	
   <body>
   
      {% block content %}
         Body content
      {% endblock %}
      
   </body>
</html>hello.html
{% extends "main_template.html" %}
{% block title %}My Hello Page{% endblock %}
{% block content %}
Hello World!!!<p>Today is {{today}}</p>
We are
{% if today.day == 1 %}
the first day of month.
{% elif today.day == 30 %}
the last day of month.
{% else %}
I don't know.
{%endif%}
<p>
   {% for day in days_of_week %}
   {{day}}
</p>
{% endfor %}
{% endblock %}ในตัวอย่างข้างต้นในการโทร / myapp / hello เราจะยังคงได้ผลลัพธ์เหมือนเดิม แต่ตอนนี้เราอาศัยการขยายและบล็อกเพื่อ refactor รหัสของเรา -
ใน main_template.html เรากำหนดบล็อกโดยใช้แท็กบล็อก บล็อกหัวเรื่องจะมีชื่อเพจและบล็อกเนื้อหาจะมีเนื้อหาหลักของเพจ ใน home.html เราใช้การขยายเพื่อสืบทอดจาก main_template.html จากนั้นเราเติมคำจำกัดความของบล็อกด้านบน (เนื้อหาและชื่อเรื่อง)
แท็กความคิดเห็น
แท็กความคิดเห็นช่วยในการกำหนดความคิดเห็นเป็นเทมเพลตไม่ใช่ความคิดเห็น HTML แต่จะไม่ปรากฏในหน้า HTML อาจเป็นประโยชน์สำหรับการจัดทำเอกสารหรือเพียงแค่แสดงความคิดเห็นเกี่ยวกับโค้ด