Django——模板路徑 模板變量 常用過濾器 靜態文件的使用
阿新 • • 發佈:2018-12-21
... body format safe quest 文件 數字 last html
Django
- 模板路徑
- 模板變量
- 過濾器
- 靜態文件的加載
模板的路徑,有兩種方法來使用
- 設置一個總的templates在大項目外面,然後在sittings的TEMPLATES中聲明
在每一個APP中創建templates,然後在settings的INSTALLED_APPS中聲明
模板變量的使用
- 語法: {{ 變量名 }}
- 命名由字母和數字以及下劃線組成,不能有空格和標點符號
- 可以使用字典、模型、方法、函數、列表
- 不要和python或django關鍵字重名
- 變量和查找
- 註:
1.如果data是一個字典,那麽訪問data.items將會訪問data這個字典的key名為items的值,而不會訪問字典的items方法。
2.點在模板渲染時有特殊的含義。 變量名中點表示查找
配置好templates,url,
views.py:
# 模板變量 def str_con(): return ‘hello Django!‘ class test(): def __init__(self, name, age): self.name = name self.age = age def who_are_you(self): return ‘your name is %s‘%self.name + ‘ and you are %s years old‘%self.age lei= test(‘Tom‘, ‘21‘) string = "I don‘t like you!" li = [‘a‘, ‘b‘, ‘c‘] tup = (‘apple‘, ‘pear‘, ‘fuck‘) di = {‘name‘: ‘Lucy‘, ‘age‘: ‘22‘} def template_variables(request): # 模板變量以及過濾器示例 return render(request, ‘book/Template_variables.html‘, context={ ‘no‘: str_con, ‘lei‘: lei,‘string‘: string, ‘list‘:li, ‘tuple‘: tup, ‘dict‘: di, ‘way‘: lei.who_are_you, ‘tags‘: ‘<b><i>Django<i></b>‘, ‘ss‘: ‘Django‘, ‘now‘:datetime.datetime.now, ‘num1‘: 1, ‘num2‘: 2, ‘test‘: ‘Hello Django!‘, ‘html‘: ‘<h1>HELLO django</h1>‘, })
templates中的html文件:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>模板變量</title> <style> </style> </head> <body> <p>方法名:{{ no }} == 調用了方法</p> <p>類名:{{ lei }}</p> <p>字符串:{{ string }}</p> <p>列表:{{ list }}以及列表第二個值:{{ list.1 }} || 從0開始索引</p> <p>元組{{ tuple }}以及元組第二個值{{ tuple.1 }}</p> <p>字典:{{ dict }}</p> <p>字典獲取元素(name):{{ dict.name }}</p> <p>字典取所有值:{{ dict.items }}</p> <p>示例調用方法:{{ way }}</p></body> </html>
過濾器
- 作用:對變量進行過濾。在真正渲染出來之前,過濾器會根據功能處理好變量,然後得出結果後再替換掉原來的變量展示出來。
- 語法:{{ fruits | lower }}
- 管道符號進行鏈式調用,比如實現一個功能,先把所有字符變成小寫,把第一個字符轉換成大寫。
- 語法:{{ fruits | lower | capfirst }}
- 使用參數:過濾器可以使用參數,在過濾器名稱後面使用冒號”:”再加上參數,比如要把一個字符串中所有的空格去掉,則可以使用cut過濾器,
- 語法如下: {{fruits|cut:" "}}
- 註意:使用參數的時候,冒號和參數之間不能有任何空格,一定要緊挨著。
常用的過濾器:
示例:配置好url以及views(還是上面的views)後
html中:
<p>過濾器</p> <p>相同的類型相加:{{ num1|add:num2 }}</p> <p>沒有的默認設置:{{ xxx|default:‘ookk‘ }}</p> <p>列表第一個元素:{{ list|first }}</p> <p>列表最後一個元素:{{ list|last }}</p> <p>字符串拼接join:{{ list|join:‘*‘ }}</p> <p>返回序列長度:{{ tuple|length }}</p> <p>判斷列表長度是不是3?{{ list|length_is:3 }}</p> <p>字符串Hello Django!小寫:{{ test|lower }}</p> <p>字符串首字母大寫:{{ test|lower|capfirst }}</p> <p>按規定省略(...算三個字符):{{ test|truncatechars:8 }}</p> <p>按單詞省略:{{ test|truncatewords:1 }}</p> <p>HTML標簽一同省略的情況:{{ html|truncatechars:8 }}</p> <p>HTML標簽不算的字符的省略{{ html|truncatechars_html:8 }}</p> <p>HTML省略truncatewords_html方法相同</p> <p>列表切片:{{ test|slice:‘2:6‘ }}</p> <p>去掉html標簽:{{ html|striptags }}</p> <p>浮點數格式化(默認小數Π,保留3位): {{ num3|default:3.1415926|floatformat:3 }}</p> <p>默認的date日期時間格式:{{ now|date }}</p> <p>默認的time時間格式:{{ now|time }}</p> <p>默認的date過濾器24小時制的年月日時間:{{ now|date:‘Y-m-d H:i:s‘ }}</p> <p>默認的time過濾器12小時制的時間:{{ now|time:‘h:i:s‘ }}</p> <p>html標簽自動轉義,{{ tags|safe }}</p>
關於自動轉義:
自動轉義是將變量的一些特殊字符,比如左箭頭(<)、右箭頭(>)轉義成html代碼,這樣做的目的是為了處理一些不安全的變量。
- <:轉義成<
- >:轉義成>
- ‘:轉義成'
- “:轉義成"
- &:轉義成&
靜態文件的加載
在大項目的路徑下創建文件夾static(與templates同路徑)
在settings中設置靜態文件路徑
在static文件夾中分別配置一些靜態文件,再在templates中建一個html用來渲染,配置好路徑和視圖
static_file.html中:
{% load static %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>靜態文件渲染</title> <style> * { margin: 0; padding: 0; } </style> </head> <body> <img src="{% static ‘image/cat.jpg‘ %}" alt="網絡錯誤"> <link rel="stylesheet" href="{% static ‘css/book.css‘ %}"> <script src="{% static ‘js/book.js‘%}"></script> </body> </html>
註意:靜態文件的使用,在html文件頂上一定要先加上{% load static %}
Django——模板路徑 模板變量 常用過濾器 靜態文件的使用