'filters'不是注册的标签库

时间:2016-09-19 09:34:52

标签: python django python-3.x django-allauth

我有关于模板过滤器的问题。我使用 django allauth 进行用户注册。我编辑了它的signup.html并使用循环迭代字段以动态显示它们。我可以显示字段但无法定义类型字段。

我做的是

帐户/ signup.html

{% load filters %}
<form class="signup" id="signup_form" method="post" action="{% url 'account_signup' %}">
    {% csrf_token %}
    {% for field in forms.visible_fields %}
        <input type="{{ field.field.widget|input_type}}" name="{{ field.name }}" id="{{ field.id_for_label}}" class="form-control">
    {% endfor %}
</form>
主应用内的

模板过滤器(filters.py)

from django import template
register = template.Library()

@register.filter('input_type')
def input_type(ob):
    return ob.__class__.__name__

模板位置

'DIRS': [os.path.join(BASE_DIR, 'templates')

因为我正在使用django allauth我应该在哪里放置我的模板过滤器代码?注册表单以使用名字和姓氏扩展allauth表单在主应用程序内。

2 个答案:

答案 0 :(得分:2)

标记库应放在应用程序根目录的templatetags目录中:

请参阅docs

中的代码布局
  

当Django应用程序添加到INSTALLED_APPS时,它定义的任何标记   下面描述的传统位置是自动进行的   可以在模板中加载。

     

应用程序应包含templatetags目录,与...相同   models.pyviews.py等。如果这不存在,请创建它 -   不要忘记__init__.py文件以确保处理目录   作为Python包。

答案 1 :(得分:1)

这为我修复了错误。我将此添加到了 init .py

import pymysql

pymysql.install_as_MySQLdb()