我想在Django中注册一个简单的过滤器,以便在一个模板中连接两个字符串。我在这里发现了很多关于这方面的问题,但似乎没有答案来解决我的问题。
settings.py
'MedAbrDirk.apps.MedabrdirkConfig',
'MedAbrDirk.templatetags',MedAbrDirk/templatetags/my_tags.py
from django import template
register = template.Library()
@register.filter
def kette(arg1,arg2):
return str(arg1) + str(arg2)MedAbrDirk/templates/MedAbrDirk/base.html
{% load my_tags %}
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-md-2 sidebar">
<ul class="nav nav-sidebar">
<li class="dropdown">
<a href="#" class="dropdown-toggle-menu" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Rechnungen<span class="caret"></span></a>
<ul class="dropdown-menu">
{{'test'|kette:'test2'}}
<li><a href="{% url app_var|kette:'eingabe' %}">Rechnung eingeben<span class="sr-only">(current)</span></a></li>不过,在浏览器中我得到了:“无效筛选器:'kette'”
我不知道是什么原因造成的。我已经删除了pychache文件夹,我已经重新启动了我的美甲几次。
有什么建议吗?
发布于 2020-08-29 08:22:56
使用文档向装饰器注册自定义筛选器,您可以执行以下任一操作
# function name is taken as filter name
@register.filter
def kette(arg1, arg2):
# code或
# value in name argument is taken as filter name
@register.filter(name='kette')
def kette(arg1, arg2):
# code您可以在name中添加filter()参数,也可以从filter()中删除括号。
你说你有一个init.py文件。按顺序,python应该将其作为包__init__.py文件放在templatetags文件夹中。不是init.py。
因此,在您的app文件夹中,您应该会看到这样的结构,用于定制模板标记:
MedAbrDirk/ #app folder
MedAbrDirk/templatetags/
MedAbrDirk/templatetags/__init__.py # should have double underscore on both the sides
MedAbrDirk/templatetags/my_tags.py发布于 2020-08-29 10:31:48
谢谢你的帮助。看来我是偶然发现的。在另一个应用程序中,我也有一个带有文件my_tags.py的文件夹模板。我以为这些会由Django单独处理。显然,情况并非如此。
因此,在重命名模块之后,现在它可以工作了。
https://stackoverflow.com/questions/63644863
复制相似问题