templates 目錄是存放 html 的地方,如果 html 裏的資料要進行變更,可以使用 Python 進行修改。
views.py 可以看成是主程式,”.html” 可以看成是函數。
views.py 檔要載入 html 檔,需使用 render 函數,第 2 個參數指定要載入的 html 檔,第 3 個參數為要傳入 html 的變數,必需使用字典{“變數名1”: 值1, “變數名2”: 值1, ….}
return render(request, 'test.html',
{'currentTime': str(datetime.now()),'var_i':10, 'var_j':10}
)
模板簡介
底下是九九乘法表 table9.py 的代碼
from django.shortcuts import render
from django.http import HttpResponse
from datetime import datetime
def html(request):
i=range(1,10)
j=range(1,10)
return render(request, 'table9.html',
{'currentTime': str(datetime.now()),'var_i':i, 'var_j':j}
)
table9.html語法如下
<html> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>Hello World!</h1> <em>{{ currentTime }}</em> <table border="1" cellpadding="0" cellspacing="0"> {% for i in var_i %} <tr> {% for j in var_j %} <td width="50">{% widthratio i 1 j %}</td> {% endfor %} </tr> {% endfor %} </table> </body> </html>
模板標籤
{% xxx %} …. {% endxxx %} 其中的 “xxx” 稱為模板標籤 (template tags),這是為了在 html 中可以套用判斷式、迴圈及一般運算的關鍵字。
{{變數}} 標籤
在 html 中,可以使用 {{變數}} 接收 views.py 傳進來的變數,並列印在 html 中。
for 標籤
{% for %} …. {% endfor %} 可以讓 html 在這區塊中持續執行迴圈
if 標籤
{% if %}..{% else %}…{% endif %} 可以在這區塊中判定那些區塊要執行,那些不執行。請注意,
if var_now == i%,在 “==” 的前後都要空格。
<select name="year">
{% for i in var_year%}
{% if var_now == i %}
<option value="{{i}}" selected>{{i}}</option>
{% else %}
<option value="{{i}}">{{i}}</option>
{% endif%}
{% endfor %}
</select>
widthratio 標籤
widthratio 也是一個標籤關鍵字,語法如下
{% widthratio this_value max_value max_width %}
此語法的目的是為了求出如下的值
$(x=this\_value*\frac{max\_width}{max\_value})$
數字相乘
$(x=this\_value*\frac{max\_width}{1})$
其實只要記得第 2 個參數為 1 , 就是相乘
{% widthratio this_value 1 max_width %}
數字相除
$(x=this\_value*\frac{1}{max\_value})$
一樣只要記得第 3 個參數為 1 , 就是相除
{% widthratio this_value max_value 1 %}
todo
Template Filter
https://djangogirlstaipei.gitbooks.io/django-girls-taipei-tutorial/content/django/template_tags.html
todo