(一){%%}和{{ }} {%%}:裡面的是模板標簽,{{}}裡面的是變數 {%%}標簽: 只有模板變數、字元串、整數和小數可以作為 {% ifequal %} 標簽的參數,像字典、列表、布爾類型的是不能用在 {% ifequal %}中的,例如{% ifequal test [1,2,3] %} ...
(一){%%}和{{ }}
1 {% for post in posts %} 2 <a href=""><h2>{{ post.title }}</h2></a> 3 <p>{{ post.body }}</p> 4 <p>{{ post.timestamp }}</p> 5 <hr> 6 {% endfor %}
{%%}:裡面的是模板標簽,{{}}裡面的是變數
{%%}標簽:
1 {% if x == 1%} 2 <p></p> 3 {% else %} 4 <p></p> 5 {% endif %}
1 {% for a in a_list %} 2 <p>{{ a.name }}</p> 3 {% endfor %}
只有模板變數、字元串、整數和小數可以作為 {% ifequal %} 標簽的參數,像字典、列表、布爾類型的是不能用在 {% ifequal %}中的,例如{% ifequal test [1,2,3] %}是錯誤的
1 {# 比較2個參數的值,user1 user2 #} 2 {% ifequal user1 user2 %} 3 <p></p> 4 {% else %} 5 <p></p> 6 {% endifequal %}
{% include %}模板標簽可以顯示其他模板的內容{% include template_name %},例如
{% include 'login.html' %}
(二)模板繼承
可以在一個HTML頁面中定義公共內容(網站logo等),其他頁面繼承這個模板
1、定義基礎模板base.html
<!-- base.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>我的博客-所有博客列表</title> </head> <style> </style> <body> {% block content %} {% endblock %} <div align="center">python django 網站 2018 ©版權所有</div> </body> </html>
{% block content %}
{% endblock %}
這個標簽之間的內容是可以替換的
2、繼承,例如:下麵這個就是
第一行繼承 base.html,後面的就是替換base.html {% block content %} {% endblock %} 標簽之間的內容
1 {% extends "base.html" %} 2 {% block content %} 3 <form action="/blog/team/" method="post">{% csrf_token %} 4 <div align="center"><table >{{ form }}</table><br> 5 <input type=submit></div> 6 </form> 7 <hr> 8 {% endblock %}
(三)模板渲染
模板創建好後,可以用 context 來傳遞數據給它。 一個context是一系列變數和它們值的集合,類似於字典。
例如: django.shortcuts 文件中的render函數
def render(request, template_name, context=None, content_type=None, status=None, using=None): """ Return a HttpResponse whose content is filled with the result of calling django.template.loader.render_to_string() with the passed arguments. """ content = loader.render_to_string(template_name, context, request, using=using) return HttpResponse(content, content_type, status)
第二個參數就是模板,第三個就是要傳給模板的數據
def login(request): return render(request,'login.html',{'form':LoginPostForm,})