DTL(django template language)是Django自帶的模板語言。
for循環中有一些常用的變量
{ { 變量 | 過濾器:參數 }}
app1下的views.py
def var(request):
lists = ['java', 'Python', "c"]
dicts = {
'姓名': "艾希",
"年齡": 24
}
return render(request, 'app1/var.html', {
'lists': lists, 'dicts': dicts})
var.html
{
{ dicts.姓名 }}
<br />
{% for list in lists %}
<p>{
{ list }}</p>
{% endfor %}
在對應的app1下新建templatetags文件下,然後新建__init__.py文件和自己創建的過濾器。
在對應的過濾器中寫入,這裡對對應的值如果大於傳入的參數,則分割加上…來顯示
from django import template
register = template.Library()
@register.filter
def show_title(value, n):
if len(value) > n:
return f'{
value[0:n]}...'
else:
return value
對應的模板文件
{% load myfilter %} {
{ dicts.標題 |show_title:10 }}
自定義標簽和上面的原理一致。
新建一個base.html頁面作為模板
<html>
<head></head>
{% block title %}
<title>這是母版</title>
{% endblock %}
<body>
<table border="1" >
<tr>
<td colspan="2" >
這是top區域,一般用於導航
</td>
</tr>
<tr >
<td >這是左邊的菜單</td>
<td >
{% block content %} 這個區域隨著內容頁的變化而變化 {% endblock %}
</td>
</tr>
<tr>
<td colspan="2" >
這是底部區域,一般用於導航
</td>
</tr>
</table>
</body>
</html>
新建一個頁面,繼承base頁面。
{% extends "app1/base.html" %} {% block title %}
<title>這是歡迎頁面</title>
{% endblock %} {% block content %}
<div >歡迎來到我的特色小店</div>
{% endblock %}
新建路由,測試,也可使用{% include %}