나는 당신이 어떤 그룹에 속해 있는지에 따라 맞춤 메뉴를 원합니다. Django 1.10.1, allauth 등을 사용하고 있습니다. 내 templatetag를 만들려고 할 때 실패하고 다음과 같이 표시됩니다.
TemplateSyntaxError at /
'my_templatetag' is not a registered tag library. Must be one of:
account
account_tags
admin_list
admin_modify
admin_static
admin_urls
cache
i18n
l10n
log
socialaccount
socialaccount_tags
static
staticfiles
tz
‘my_templatetag.py’는 다음과 같습니다.
from django import template
from django.contrib.auth.models import Group
register = template.Library()
@register.filter(name='has_group')
def has_group(user, group_name):
group = Group.objects.get(name=group_name)
return group in user.groups.all()
내 .html 파일에 오류가 있습니다.
{% load my_templatetag %}
수백만 번처럼 서버를 다시 시작하려고 시도했으며 모든 이름을 변경하려고 시도했으며 앱은 settings.py에서 INSTALLED_APPS의 일부입니다. 내가 도대체 뭘 잘못하고있는 겁니까?
답변
my_templatetag.py
내부 app_name/templatetags
에 넣는 것 외에도 템플릿 태그를 수정할 때마다 Django 개발 서버를 다시 시작하거나 자체적으로 다시 시작했는지 확인하십시오. 서버가 다시 시작되지 않으면 Django는 태그를 등록하지 않습니다.
답변
django 1.9에서 다음과 같은 설정에서 새 태그 / 필터를로드 할 수 있습니다.
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'app.apptemplates.load_setting',
],
'libraries':{
'my_templatetag': 'app.templatetags.my_templatetag',
}
},
},
]
답변
다음 단계가 누락되지 않았는지 확인하십시오.
-
애플리케이션 폴더의 models.py 및 views.py와 동일한 수준에 “templatetags”라는 폴더를 만듭니다.
-
애플리케이션은 settings.py의 INSTALLED_APPS에 있어야합니다.
-
templatetags 폴더에는 __init__.py가 있어야합니다.
-
장고 서버 다시 시작
답변
제 경우에는 문제가 {% load filter_method_name %}
나는 변경해야했다 {% load filename %}
그런 다음 서버 를 다시 시작 해야했습니다 .
답변
‘my_templatetag.py’는 어디에 저장됩니까? 앱 내에있는 ‘templatetags’라는 디렉토리에 저장되어야합니다.
그렇지 않은 경우 https://docs.djangoproject.com/en/dev/howto/custom-template-tags/를 참조하십시오 .
답변
django 서버를 다시 시작하십시오. 앱 내에서 templatetag 폴더를 설정하고 templatetag 폴더에서 template_name.py를 설정하면 저에게 효과적이었습니다.
답변
누군가에게 도움이되는 경우 태그를로드하려고 할 때 따옴표를 사용하는 것이 문제였습니다.
{% load 'my_templatetag' %} <!-- incorrect -->
대신에
{% load my_templatetag %} <!-- correct -->
참고 : extends
파일 이름을 따옴표로 묶어야하지만load