Django-过滤器-自定义过滤器

本文介绍了如何在Django中创建和使用自定义过滤器。通过新建应用stu,创建一个包含自定义过滤器的python package,然后在filter_mark.py文件中编写过滤器逻辑。在模板index.html中加载过滤器,并在views.py中设置视图,展示自定义过滤器的使用流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python3 manage.py startapp stu新建应用
stu右键新建python package的包,因为有init的初始文件
新建的包下新建fliter_mark.py的python文件,里面写我们的自定义过滤器
index.html中要{% load filter_mark %} 加载我们的自定义过滤器文件

filter_mark.py

# coding = utf-8
from django.http import HttpResponse
from django.template import Library

register = Library()


@register.filter
def md(value):
    import markdown
    return markdown.markdown(value)


@register.filter
def splitstr(value, args):
    start, end = args.split(',')
    value = value.encode('utf-8').decode('utf-8')
    return value[int(start):int(end)]

index.html

{% load static %}
{% load filter_mark %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>过滤器</title>
    <link rel="stylesheet" type="text/css" href="{% static 'dist/css/bootstrap.css' %}"/>
    <script src="{% static 'jquery-3.4.1.js' %}" type="text/javascript" charset="utf-8"></script>
    <script src="{% static 'dist/js/bootstrap.js' %}" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div class="container">
    {{ num|add:'2' }}
    <br/>
    {{ name|capfirst }}
    <br/>
    {{ current|date:"Y-m-d h:i:s" }}
    <br/>
    {{ num|divisibleby:'2' }}
    <br/>
    {{ urlstr|safe }}
    <br/>
    {{ content|md|safe }}
    <br/>
    {{ str|splitstr:"0,5" }}
</div>
</body>
</html>

views.py

from django.db.models.functions import datetime
from django.shortcuts import render

# Create your views here.
from django.views import View


class IndexView(View):
    def get(self, request):
        urlstr = '<h3>www.baidu.com</h3>'
        content = '# 自定义过滤器'
        str = 'BobbySmith'
        return render(request, 'index.html', {'num': 8,
                                              'name': 'bobby',
                                              'current': datetime.datetime.today(),
                                              'urlstr': urlstr,
                                              'content': content,
                                              'str': str,
                                              })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值