2016-11-18 10 views
13

मुझे एक मेनू चाहिए जो कस्टम है कि आप किस समूह के सदस्य हैं। मैं Django 1.10.1, allauth और इतने पर उपयोग कर रहा हूँ। im मेरी templatetag यह विफल करने की कोशिश कर रहे हैं और यह कहते हैं: ¨Django 1.10.1 'my_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 का एक हिस्सा है। मैं क्या गलत कर रहा हूँ?

उत्तर

3

संग्रहीत 'my_templatetag.py' कहां है? इसे 'templatetags' नामक निर्देशिका में संग्रहीत किया जाना चाहिए जो ऐप के भीतर है।

कृपया देखें: https://docs.djangoproject.com/en/1.10/howto/custom-template-tags/ यदि ऐसा नहीं है।

+0

धन्यवाद, यह नक्शा नाम था! – Sliljedal

23

app_name/templatetags के अंदर डालने के अलावा, सुनिश्चित करें कि आप टेम्पलेट टैग को संशोधित करते समय Django विकास सर्वर को पुनरारंभ करें (या इसे स्वयं पुनरारंभ करें)। यदि सर्वर पुनरारंभ नहीं करता है, तो Django टैग पंजीकृत नहीं करेगा।

11

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', 

      } 
    }, 
}, 

]

+0

इसके लिए बहुत बहुत धन्यवाद :) इसे दूसरे तरीके से काम नहीं कर सका। – Jonathan

+0

धन्यवाद, यह मेरे लिए काम किया! – RockOnGom

+0

यह मेरे लिए भी काम करता है। यह वास्तव में प्रश्न के लिए चुना गया जवाब हो सकता है। अगर लोग आश्चर्य करते हैं तो मैं django के 2.0 संस्करण का उपयोग कर रहा हूं। – Doug

0

मैं जानता हूँ कि यह एक सा पुराना है, लेकिन मैं आज एक ही समस्या में पड़ गए। डॉन - https://docs.djangoproject.com/en/1.10/howto/custom-template-tags/

अनुप्रयोग, एक templatetags निर्देशिका को शामिल करना चाहिए models.py, views.py, आदि इस पहले से मौजूद नहीं हैं, तो इसे बनाने के रूप में एक ही स्तर पर: मैं डॉक्स में समाधान नहीं मिला निर्देशिका को पायथन पैकेज के रूप में माना जाता है यह सुनिश्चित करने के लिए __init__.py फ़ाइल को न भूलें।

बस किसी अन्य स्थान से __init__.py को नई templatetag की निर्देशिका में कॉपी करके इसे हल किया गया।

1

django सर्वर को पुनरारंभ करें। यह templatetag फ़ोल्डर में templatetag फ़ोल्डर और टेम्पलेट_नाम.py में सेट करने के बाद मेरे लिए काम करता है।

5

सुनिश्चित करें कि आप निम्न चरणों में से किसी भी लापता नहीं कर रहे हैं:

  1. एक फ़ोल्डर आपके आवेदन फ़ोल्डर में models.py और views.py के रूप में एक ही स्तर पर "templatetags" कहा जाता बनाएं

  2. आपका आवेदन INSTALLED_APPS में सेटिंग.py

  3. templatetags फ़ोल्डर में __init__ होना चाहिए।py

  4. पुनः प्रारंभ Django सर्वर

+0

ऐसा लगता है कि मेरे सभी ऐप्स को 'default_app_config = 'custom_admin.apps.Config' रखने के लिए apps.py और __init__.py की आवश्यकता होती है। अन्यथा Django 1.10 templatetags लोड नहीं कर रहा है। हालांकि मैं इसे दस्तावेज़ों में स्पष्ट रूप से नहीं देखता हूं। – felix

0

डाल my_templatetag.py app_name अंदर/templatetags तो init app_name अंदर .py बनाने/templatetags .. प्रोजेक्ट फ़ोल्डर में फिर खुला टर्मिनल देना आदेश अजगर manage.py app_name.templatetags आयात my_templatetag से शैल

+0

templatetags फ़ोल्डर क्रेट रिक्त फ़ाइल के नाम के साथ __init__.py –

+0

कृपया सभी विवरण डालने के लिए [अपना जवाब संपादित करें] (https://stackoverflow.com/posts/47772135/edit) और इसे पढ़ने योग्य बनाने के लिए प्रारूपित करें (कोड स्वरूपण का उपयोग करें जहां उपयुक्त हो)। – Melebius

0

आप होम कोड से के अंदर लिखे गए अपने कोड को केवल हटाएं/हटाएं, आप अपना कोड हटा दें और अपना सर्वर पुनरारंभ करें और फिर अपना कोड home.py में पेस्ट करें।

संबंधित मुद्दे