国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Django中利用filter與simple_tag為前端自定義函數的實現方法

2020-02-16 01:42:28
字體:
來源:轉載
供稿:網友

前言

Django的模板引擎提供了一般性的功能函數,通過前端可以實現多數的代碼邏輯功能,這里稱之為一般性,是因為它僅支持大多數常見情況下的函數功能,例如if判斷,ifequal對比返回值等,但是稍微復雜一些的函數功能并不支持,例如通過模板來判斷一個返回值是否是合法的數字類型,此時如果又不希望通過后臺視圖代碼來實現的話,我們就可以自定義一些前端函數功能。

Django為我們提供了兩種方式,分別是filter和simple_tag,下面對比兩種方式,分別實現判斷返回值的功能函數。

準備工作

      1、應用程序必須要注冊到settings配置文件中

      2、在應用目錄下創建templatetags目錄

      3、在templatetags創建模塊文件,并導入Django內部方法

filter

在templatetags目錄下創建python模塊,這里命名為app01_func.py,內容如下:

from django import templatefrom django.template.defaultfilters import stringfilterregister = template.Library()@register.filterdef value_verification(value): # value為前端傳遞的參數 try:  int(value)  return True except:  return False

定制完后臺功能后,就可以在模板文件中調用函數功能,首選需要在模板文件頭中引入后臺python模塊。

{% load app01_func %}

例如我們需要判斷后臺返回值load是否為一個有效數字時,可以做如下調用:

{% if load|value_verification %} {{ load }} is a valid int number.{% else %} {{ load }} is letter.{% endif %}

simple_tag

simple_tag的代碼方式與filter一樣,不同的是在裝飾器部分需要調用simple_tag方法

from django import templatefrom django.template.defaultfilters import stringfilterregister = template.Library()@register.simple # 這里修改為simple_tagdef value_verification(value): # value為前端傳遞的參數 try:  int(value)  return True except:  return False

同時前端的調用方式也需要改為

{% value_verification load %}

傳遞參數

      - filter 最多支持兩個參數傳遞

      - simple 支持多個參數傳遞

filter中可以通過下面的方式實現參數傳遞

{{ load | value_verification:"100"}}

這里即向后端傳遞了兩個參數,一個是load,另一個是100,后端也要為函數指定好形參:

def value_verification(value, custom): # 配置好形參 ...

simple_tag中可以指定多個形參,前臺的調用方式如下:

{% value_verification load 100 200 ... %}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 云南省| 万州区| 新野县| 上栗县| 漳州市| 堆龙德庆县| 肥城市| 南江县| 马公市| 平顶山市| 淮阳县| 株洲县| 仪陇县| 思茅市| 珠海市| 阳山县| 临澧县| 西藏| 兴宁市| 拉萨市| 五大连池市| 乌苏市| 梧州市| 南江县| 正安县| 华蓥市| 海阳市| 十堰市| 虎林市| 屏东县| 赞皇县| 徐水县| 张北县| 鄢陵县| 阜新市| 石棉县| 德兴市| 腾冲县| 同仁县| 米泉市| 密云县|