日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

模板变量,过滤器和静态文件引用

發布時間:2023/11/29 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模板变量,过滤器和静态文件引用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

模板變量,過濾器和靜態文件引用

模板路徑

  • Djiango先到settings里面找templates下的DIRS查看是否有路徑,也是從上往下依次尋找,找到就返回。
  • 如果DIRS沒有,就到APP_DIRS里面尋找。但是APP要先在INSTALLED_APPS里面進行注冊然后根據INSTALLED_APPS里面從上往下順序依次尋找。

模板變量

  • 動態頁面:隨時間改變會改變相應數據內容等(并不是JS就是動態頁面)
  • 靜態頁面:反之

  • 語法:{{變量名}},變量名命名規則和py變量一樣,但是卻不能以下劃線_開頭;注意避免關鍵字。

例如編寫顯示時間:

from datetime import datetimedef index(request):now = datetime.now()return render(request,'teacher/index.html',context={'now' : now})#HTML <p>當前時間是:{{now}}</p> #注意,倆個大括號里面的now對應的是context里的key的now

此時顯示的時間并不是北京時間,要進行修改。
到項目目錄下的settings里面最下面的TIME_ZONE = 'UTC'進行修改
改為TIME_ZONE = 'Asia/Shanghai'
(不要問我為什么不是Beijing,改成Beijing會報錯,畢竟上海比較有名吧,估計是歷史原因)

修改之后:

關于模板變量的解析

  • 列表list
lt = [0,1,2]return render(request,'teacher/index.html',context={'lt':lt})#HTML <p>傳遞的列表是:{{ lt }}</p> <p>列表下標是1的元素是:{{ lt.1 }}</p>

說明:
傳遞列表的時候獲取某個元素要使用list_name.索引的形式進行獲取

結果如圖:

  • 字典
dt = {'name' : '小明','age' : 1}return render(request,'teacher/index.html',context={'dt':dt})#HTML <p>傳遞的字典是:{{ dt }}</p> <p>傳遞的字典['name']是:{{ dt.name }}</p>

說明:同樣是通過dt_name.key的形式獲取某個value

結果如圖:

  • 函數
def func():return 'Hello world'return render(request,'teacher/index.html',context={'func':func})#HTML <p>傳遞的func是:{{ func }}</p>

說明:
函數不能設置有參數,只能設置無參數函數。因為在解析的時候解析的是變量名,而變量名是不可以攜帶變量的。

結果如圖:

變量解析規則

  • 當模板引擎遇到了變量時,會計算該變量,并以結果替換之
  • 當模板引擎遇到了變量時,按照以下順序嘗試查找:
    • 字典鍵值查找
    • 屬性或方法查找
    • 數字索引查找
  • 如果結果是一個可調用的(callabled),則調用他,結果為模板變量的值
  • 解釋:

  • 如果ret = 1+1,的時候,解析出來的結果會用2代替1+1
  • 字典.方法名,會解析出來方法的返回值;但是如果字典里面含有和方法重名的key的時候,會按照順序,解析為所對應的value
  • 調用函數
  • 常用的過濾器

    現在先介紹內置過濾器(自定義以后聊)

    過濾器:

    • 語法:{{fruits|lower}}
    • 作用: 對變量進行過濾。在真正渲染出來之前,過濾器會根據功能處理好變量,然后得出結果后再替換掉原來的變量展示出來。
    • 管道符號進行鏈式調用,比如實現一個功能,先把所有字符變成小寫,把第一個字符轉換成大寫。{{fruits|lower|capfirst|..|..}
    • 使用參數:過濾器可以使用參數,在過濾器名稱后面使用冒號”:”再加上參數,比如要把一個字符串中所有的空格去掉,則可以使用cut過濾器,{{fruits|cut:" "}}

    語法:{{變量名|過濾器}}
    例如:

    • 時間的:{{name|date:"D d M Y"}}
    • 列表的:
      • name|add:數字
      • name|first/last
      • name|slice:"num:num"

    注意:不要習慣性在冒號倆邊加上空格,會報錯

    常用的過濾器:

    date和time過濾器格式:

    靜態文件的引用

    路徑設置

    靜態文件由內建APP'django.contrib.staticfiles'管理,調試用到,實際使用不會用到
    django.contrib.staticfiles這個app被包含在INSTALL_APPS中
    配置語法:

    #setting.py STATICFILES_DIRS = []

    步驟:

  • 在項目根目錄下創建一個static,注意要分APP文件夾
  • 寫入STATIC_URL = '/static/'(默認就有)
  • 在settings最下面加入STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]
  • 靜態文件引用

    {% load static %}#寫在模板頂部#導入的時候 src = "{% static 'app_name/img/name.jpg' %}" 如此類推

    轉載于:https://www.cnblogs.com/pygive/p/10607779.html

    總結

    以上是生活随笔為你收集整理的模板变量,过滤器和静态文件引用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。