以下是一個簡單的Django模板示例:
<!DOCTYPE html>
<html><head><title>{{ title }}</title></head><body><h1>{{ heading }}</h1><p>{{ content }}</p></body>
</html>
一、模板的基本語法
1、變量{{和}}
字典的查詢、屬性、列表索引查找都是通過遠點符號.來實現的;
變量名中不能有空格或者標點符號。
2、標簽{%和%}
eg:{% csrf_token %} # csrf令牌標簽
大部分標簽都接受參數:{% cycle ‘odd’ ‘even’ %} # 循環使用’odd’和’even’
部分標簽需要使用起始和閉合標簽,典型代表為for循環標簽和if判斷標簽:
{% if user.is_authenticated %}Hello, {{ user.username }}.{% endif %},或者里面填endfor
block繼承標簽,extends復寫模板標簽,都需要end結尾
{% block content %} 只是給標簽起名字,增加可讀性;不能在一個模板下定義多個名字相同的block標簽
static標簽用于鏈接保存在STATIC_ROOT中的靜態文件。例如:
{% load static %}
<img src="{% static “images/hi.jpg” %}" alt=“Hi!” />
還可以使用變量:
{% load static %}
3、過濾器
{{ my_date|date:“Y-m-d” }} # 按指定的格式"Y-m-d",顯示日期
{{ value|filesizeformat }}
4、注釋
{# this won’t be rendered #} # 單行注釋
{% comment %}{% endcomment %}標簽提供多行注釋功能。
5、模板繼承
{% extends “base.html” %}
block是在子模版中可能會被覆蓋掉的位置,父類模板可以比子類模板多。
6、方法調用
class Task(models.Model):
def foo(self):
return “bar”
可以用{{ task.foo }}調用
多對多的時候,可以間接的調用:
{% for course in student.course_set.all %}
{{ course.name }}
{% endfor %}