第三百一十节,Django框架,模板语言
第三百一十節,Django框架,模板語言
?
模板語言就是可以將動態數據在html模板渲染的語言
?
一、接收值渲染
locals()函數,寫在請求響應render()函數里,可以將邏輯處理函數里的變量傳到html用模板語言渲染
{{...}}接收一個變量或者值進行渲染
邏輯處理
from django.shortcuts import render from app1.models import * #導入數據庫操作模塊#邏輯處理模塊 def special(request):a = '叫賣錄音網'return render(request, 'index.html', locals()) # 打開頁面html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body> <h1>{{ a }}</h1> </body> </html>?
二、接收值,運行代碼塊
for循環
{% for item in item_list %}
?<a>{{ item }}</a>
forloop.counter 計數器,記錄循環次數
forloop.first ? 判斷是否是循環第一次,返回布爾值? ??
forloop.last 判斷是否是循環最后一次,返回布爾值?
?{% endfor %}
邏輯處理
from django.shortcuts import render from app1.models import * #導入數據庫操作模塊#邏輯處理模塊 def special(request):a = ['首頁','產品展示','關于我們']return render(request, 'index.html', locals()) # 打開頁面html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body> <ul>{% for i in a %}<li>{{ i }}</li>{{ forloop.counter }}{{ forloop.first }}{{ forloop.last }}{% endfor %} </ul> </body> </html>if判斷
{% if ordered_warranty %} ?
{% else %}
{% endif %}
邏輯處理
from django.shortcuts import render from app1.models import * #導入數據庫操作模塊#邏輯處理模塊 def special(request):a = ['首頁','產品展示','關于我們']return render(request, 'index.html', locals()) # 打開頁面html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body> <ul>{% for i in a %}{% if i == '首頁' %}<li style="color: #ee1215">{{ i }}</li>{% elif i == '產品展示' %}<li style="color: #1b47ee">{{ i }}</li>{% else %}<li>{{ i }}</li>{% endif %}{% endfor %} </ul> </body> </html>?
三、母板-子板-母板繼承
母板繼承就是訪問的頁面繼承一個母板,將訪問頁面的內容引入到母板里指定的地方,組合成一個新頁面返回給瀏覽器
一般母板里都是寫的一個網頁里不變的地方,也就是通用的地方,被繼承頁(訪問頁)都是每個頁面不同的地方,也就是將頁面不同的地方引入到母板組合成一個新頁面返回瀏覽器
母板里一般都是網頁的、頭部、底部、頭部底部css、頭部底部js
被繼承頁(訪問頁)里一般都是新內容,新內容的css和js
母板:{% block title %} {% endblock %} 設置可調用區塊或,有參設置可調用區塊,無參調用區塊
子板:{% extends "base.html" %} 子板繼承母板
{% block title %} {% endblock %} 設置可調用區塊或,有參設置可調用區塊,無參調用區塊
邏輯處理?
from django.shortcuts import render from app1.models import * #導入數據庫操作模塊#邏輯處理模塊 def special(request):return render(request, 'index.html', locals()) # 打開頁面母板
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" type="text/css" href="/static/css/tou.css">{% block css %}{% endblock %} #調用子板的css樣式 </head> <body><div id="tou">頭部</div>{% block nei_rong %}{% endblock %} #調用子板的內容區塊<div id="wei">尾部</div> </body> </html>子板(訪問頁)
{% extends "tou.html" %} #繼承母板{% block css %} #設置母版調用css樣式區塊<link rel="stylesheet" type="text/css" href="/static/css/index.css"> {% endblock %}{% block nei_rong %} #設置母版調用字板內容區塊<div id="neir">內容</div> {% endblock %}?
四、幫助方法:
{{ item.event_start|date:"Y-m-d H:i:s"}} 格式化時間
{{ bio|truncatewords:"30" }} ? ?只顯示指定字數
{{ my_list|first|upper }} ? ? ?首字母大寫
{{ name|lower }} ? ? ? ? ??首字母小寫
?
?
五、自定義html模板可調用函數模塊
a、在app應用中創建templatetags目錄
b、在目錄中創建任意 .py 文件,如:xx.py
在py文件里設置html可調用函數,注意py文件里有幾個注意點如下:
#!/usr/bin/env python # coding:utf-8 from django import template #必須導入這個模塊 from django.utils.safestring import mark_safe #必須導入這個模塊register = template.Library() #固定格式必須設置這個變量 @register.simple_tag #自定義函數必須用上這個裝飾器,html頁面才可以調用 def my_simple_time(v1, v2, v3): #自定義函數return v1 + v2 + v3@register.simple_tag def my_input(id, arg):result = "<input type='text' id='%s' class='%s' />" % (id, arg,)return mark_safe(result)c、在使用自定義函數的html文件中導入自定義函數模塊 xx.py 文件名
{% load 自定義函數模塊名稱 %}
d、html頁面使用
{% 函數名稱 參數 參數 參數 %}
?
注意:使用自定義html函數,必須在全局配置文件settings.py里的INSTALLED_APPS注冊了app應用
INSTALLED_APPS = ('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','app01', )?
?
?
?
?
?
轉載于:https://www.cnblogs.com/adc8868/p/7173139.html
總結
以上是生活随笔為你收集整理的第三百一十节,Django框架,模板语言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java的重写
- 下一篇: _ZNote_Chrom_插件_Chro