我得到这个错误->无效过滤器:'cutter'这是我的自定义tags.py:
from django import template
from random import randint
register = template.Library()
def cutter(list, args):
return list[args]
register.filter('cutter', cutter)
index.html的一小部分:
{% extends 'main.html' %}
{% load custom_tags %}
{% load humanize %}
{% load static %}
{% block title %}main{% endblock title %}
{% block home %}active{% endblock home %}
{% block body %}
<span>{{regions_count|cutter:forloop.counter0}}</span>
{% endblock body %}
和我的目录是:
my_app/
├── ...
├── templatetags/
│ ├── __init__.py
│ └── _pycache_(folder)
| └── custom_tags.py
└── views.py
我试了一下:
custom_tags.py (list对于变量来说是个坏名字——因为它掩盖了内建的list函数)
from django import template
register = template.Library()
def cutter(entry_list, args):
return entry_list[args]
register.filter('cutter', cutter)
index . html:
{% extends 'admin/base.html' %}
{% load custom_tags %}
{% block title %}main{% endblock title %}
{% block content %}
<span>{{ regions | cutter:0 }}</span>
{% endblock %}
views.py:
from django.shortcuts import render
from django.http import HttpResponse
from .models import Region
def index(request):
context = {
'regions': Region.objects.all()
}
return HttpResponse(render(request, 'index.html', context))
和这个目录结构:
my_project
├── my_app/
| ├── ...
| ├── templates
| | └── index.html
| ├── templatetags/
| | └── custom_tags.py
| └── views.py
一切正常,我得到第一个区域对象打印。