#暑期创作大赛#
使用模板过滤器指令
创建一个 Django 项目,并在 views.py 中定义一个视图函数,将数据传递给模板:
# views.py
from django.shortcuts import render
def my_view(request):
my_date = datetime.date(2022, 1, 1)
my_time = datetime.time(13, 30, 45)
my_text = "This is a long text that needs to be truncated."
my_list = [1, 2, 3, 4, 5]
return render(request, 'my_template.html', {
'my_date': my_date,
'my_time': my_time,
'my_text': my_text,
'my_list': my_list
})
在 my_template.html 模板中使用模板过滤器指令处理数据:
<!-- my_template.html -->
<!DOCTYPE html>
<html>
<head>
<title>My Template</title>
</head>
<body>
<h1>Date: {{ my_date | date:"F j, Y" }}</h1>
<p>Time: {{ my_time | time:"H:i:s" }}</p>
<p>Truncated Text: {{ my_text | truncatechars:30 }}</p>
<p>Text with Line Breaks: {{ my_text | linebreaks }}</p>
<p>List Length: {{ my_list | length }}</p>
</body>
</html>
在 urls.py 中配置 URL 路由,将视图函数与 URL 关联起来:
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('my-view/', views.my_view, name='my_view'),
]
现在,当你访问 http://localhost:8000/my-view/ 时,将会渲染 my_template.html 模板,并在页面上显示经过模板过滤器指令处理后的数据:
- Date: January 1, 2022
- Time: 13:30:45
- Truncated Text: This is a long text that need...
- Text with Line Breaks:
This is a long text.
It has two lines.
- List Length: 5
这个案例展示了如何在 Django 模板中使用模板过滤器指令来处理数据,以便在页面上展示格式化的日期、时间,截取和换行处理的文本,以及列表的长度等信息。
自定义过滤器
在Django中,你可以通过自定义过滤器来拓展模板语言的功能。下面是一个示例,展示如何自定义一个过滤器:
在你的Django项目中的任意一个app下创建一个名为templatetags的文件夹(如果该文件夹已经存在则跳过此步骤)。
在templatetags文件夹下创建一个名为custom_filters.py的Python文件。
在custom_filters.py中编写你的自定义过滤器。例如,下面是一个将字符串转换为大写的过滤器的示例:
from django import template
register = template.Library()
@register.filter(name='uppercase')
def uppercase(value):
return value.upper()
在你的模板中加载自定义过滤器。在你的模板的顶部添加以下代码:
{% load custom_filters %}
- 在模板中使用自定义过滤器。例如,要将一个变量my_variable转换为大写,你可以这样写:
{{ my_variable|uppercase }}
这是一个简单的示例,你可以根据自己的需求编写更复杂的自定义过滤器。记得在完成以上步骤后重新启动Django开发服务器,以便让自定义过滤器生效。