django-5.模板templates
阿新 • • 發佈:2019-02-10
javascrip backend res 次循環 image 結束 view ali 分享
BASE_DIR的值前面已經定義為當前腳本的路徑:
前言
html是一個靜態的語言,裏面沒法傳一些動態參數,也就是一個寫死的html頁面。如果想實現在一個固定的html樣式,傳入不同的參數,這就可以用django的模板傳參來解決。
模板參數
先在hello應用下新建一個templates文件夾,層級目錄如下
└─helloworld
│ db.sqlite3
│ manage.py
│ __init__.py
│
├─hello
│ │ admin.py
│ │ apps.py
│ │ models.py
│ │ tests.py
│ │ views.py
│ │ __init__.py
│ │
│ ├─migrations
│ │ │ __init__.py
│ │
│ ├─templates
│ │ yoyo.html
│ │ __init__.py
│
└─helloworld
│ settings.py
│ urls.py
│ wsgi.py
│ __init__.py
新建一個yoyo.html文件,hello/templates/yoyo.html文件內容如下,模板變量用{{變量名稱}}
來表示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上海-悠悠</title>
</head>
<body>
<h1>hello world! {{name}}同學</h1>
</body>
</html>
在settings.py腳本裏面添加模板的路徑,修改TEMPLATES 中的 DIRS 為[BASE_DIR+"/hello/templates",]
BASE_DIR的值前面已經定義為當前腳本的路徑:
os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATES = [
{
‘BACKEND‘: ‘django.template.backends.django.DjangoTemplates‘,
‘DIRS‘: [BASE_DIR+"/hello/templates",], # 默認為[]
‘APP_DIRS‘: True,
‘OPTIONS‘: {
‘context_processors‘: [
‘django.template.context_processors.debug‘,
‘django.template.context_processors.request‘,
‘django.contrib.auth.context_processors.auth‘,
‘django.contrib.messages.context_processors.messages‘,
],
},
},
]
視圖與url
hello/views寫個視圖函數,內容如下
from django.http import HttpResponse, Http404
# Create your views here.
def yoyo(request):
context = {}
context[‘name‘] = ‘悠悠‘
return render(request, ‘yoyo.html‘, context)
helloworld/urls.py添加訪問路徑
from django.conf.urls import url
from django.urls import re_path, path
from hello import views
urlpatterns = [
path("yoyo/", views.yoyo),
]
接著在瀏覽器輸入地址:http://127.0.0.1:8000/yoyo/
就能訪問了
Django 模板標簽
if/else 標簽
條件判斷if語句,最後endif結束
{% if condition1 %}
... display 1
{% elif condition2 %}
... display 2
{% else %}
... display 3
{% endif %}
for 標簽
與Python的 for 語句的情形類似,循環語法是 for X in Y ,Y是要叠代的序列而X是在每一個特定的循環中使用的變量名稱。
每一次循環中,模板系統會渲染在 {% for %} 和 {% endfor %} 之間的所有內容。
<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}</li>
{% endfor %}
</ul>
ifequal/ifnotequal 標簽
{% ifequal %} 標簽比較兩個值,當他們相等時,顯示在 {% ifequal %} 和 {% endifequal %} 之中所有的值。
下面的例子比較兩個模板變量 user 和 currentuser :
{% ifequal user currentuser %}
<h1>Welcome!</h1>
{% endifequal %}
和 {% if %} 類似, {% ifequal %} 支持可選的 {% else%} 標簽
{% ifequal section ‘sitenews‘ %}
<h1>Site News</h1>
{% else %}
<h1>No News Here</h1>
{% endifequal %}
註釋標簽
Django 註釋使用 {# #}。
{# 這是一個註釋 #}
django-5.模板templates