📜  Django 中的自定义模板过滤器

📅  最后修改于: 2022-05-13 01:55:21.144000             🧑  作者: Mango

Django 中的自定义模板过滤器

Django 是一个基于 Python 的 Web 框架,可让您快速创建高效的 Web 应用程序。它也被称为包含电池的框架,因为 Django 为包括 Django 管理界面、默认数据库 - SQLlite3 等在内的所有内容提供了内置功能。

什么是 Django 模板语言 (DTL) 中的过滤器?

在开始了解如何在 Django 模板语言中制作自定义过滤器之前,让我们先了解一下什么是 Django 中的过滤器。

  • 过滤器也是我们模板语言的重要特性。
  • 过滤器基本上用于修改或过滤您的变量。
  • 您必须使用此管道 ( | ) 符号在任何变量中应用过滤器。

例如 :-

所以这个过滤器会以小写形式修改这个变量值

{{ 变量名 |过滤器名称}}

如何在 Django 中创建自定义模板过滤器?

首先安装使用以下命令创建 django 项目:-

django-admin startproject myproj
cd myproj

然后在 myproj 中创建新的应用程序

对于 Ubuntu

python3 manage.py startapp main

在 INSTALLED_APPS 内的settings.py中添加应用名称

在您的views.py中添加此视图

Python3
from django.shortcuts import render
  
# Create your views here.
def home(request):
    value="GEEKSFORGEEKS"
    return render(request,"home.html",{"value":value})


Python3
from django import template
  
register = template.Library()
  
@register.filter()
def low(value):
    return value.lower()


HTML



    Welcome To GFG


    {% load lower_filter %}
    

{{value|low}}



Python3
from django.urls import path
from .views import *
  
urlpatterns = [
    path('', home,name="home"),
  
]


Python3
from django.contrib import admin
from django.urls import path,include
  
urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include("main.urls"))
]


现在让我们在文件夹中创建templatetags目录

并且不要忘记在 templatetag 目录中创建__init__.py文件

然后创建lower_filter.py文件

蟒蛇3

from django import template
  
register = template.Library()
  
@register.filter()
def low(value):
    return value.lower()

在主目录中创建一个目录并将其命名为模板

模板目录中创建一个文件并将其命名为home.html

HTML




    Welcome To GFG


    {% load lower_filter %}
    

{{value|low}}

在主目录中创建一个文件并将其命名为urls.py

蟒蛇3

from django.urls import path
from .views import *
  
urlpatterns = [
    path('', home,name="home"),
  
]

myproj/urls.py

蟒蛇3

from django.contrib import admin
from django.urls import path,include
  
urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include("main.urls"))
]

打开cmd或终端

对于 Ubuntu

python3 manage.py runserver

输出 :-