我有关于模板过滤器的问题。我使用 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表单在主应用程序内。
答案 0 :(得分:2)
标记库应放在应用程序根目录的templatetags
目录中:
请参阅docs:
中的代码布局当Django应用程序添加到
INSTALLED_APPS
时,它定义的任何标记 下面描述的传统位置是自动进行的 可以在模板中加载。应用程序应包含
templatetags
目录,与...相同models.py
,views.py
等。如果这不存在,请创建它 - 不要忘记__init__.py
文件以确保处理目录 作为Python包。
答案 1 :(得分:1)
这为我修复了错误。我将此添加到了 init .py
import pymysql
pymysql.install_as_MySQLdb()