1. 程式人生 > >Django——模板路徑 模板變量 常用過濾器 靜態文件的使用

Django——模板路徑 模板變量 常用過濾器 靜態文件的使用

... body format safe quest 文件 數字 last html

Django

  1. 模板路徑
  2. 模板變量
  3. 過濾器
  4. 靜態文件的加載

模板的路徑,有兩種方法來使用

  • 設置一個總的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代碼,這樣做的目的是為了處理一些不安全的變量。

  • <:轉義成&lt;
  • >:轉義成&gt;
  • ‘:轉義成&#39;
  • “:轉義成&quot;
  • &:轉義成&amp;

靜態文件的加載

在大項目的路徑下創建文件夾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——模板路徑 模板變量 常用過濾器 靜態文件的使用