簡體   English   中英

“過濾器”不是注冊的標簽庫

[英]'filters' is not a registered tag library

我有一個關於模板過濾器的問題。 我已經使用django allauth進行用戶注冊。 我編輯了它的 signup.html 並使用循環來迭代字段以動態顯示它們。 我可以顯示字段但無法定義類型字段。

我所做的是

帳戶/注冊.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 表格在主應用程序中。

標簽庫應該放在app根目錄下的templatetags目錄下:

查看文檔中的代碼布局:

當 Django 應用程序被添加到INSTALLED_APPS ,它在下面描述的常規位置定義的任何標簽都會自動加載到模板中。

該應用程序應包含一個templatetags目錄,與models.pyviews.py等處於同一級別。 如果該目錄尚不存在,請創建它 - 不要忘記__init__.py文件以確保該目錄被視為一個 Python 包。

這為我修復了錯誤。 我將此添加到init .py

import pymysql

pymysql.install_as_MySQLdb()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM