2010-12-20 19 views
23

मैं Django 1.2.1 का उपयोग कर रहा हूं और मुझे अपने टेम्पलेट टैग लोड करने की कोशिश करने में समस्याएं आ रही हैं:Django: टेम्पलेट टैग लोड करने में असमर्थ

{% load mytags %} 

TemplateSyntaxError at /myapp/ 

'mytags' is not a valid tag library: Template library mytags not 
found, tried django.templatetags.mytags 

यह myproject/myapp/templatetags/mytags.py में परिभाषित है।

[email protected]:~/work/django-projects/myproject$ ls myapp/templatetags/ 
mytags.py __init.py__ 
[email protected]:~/work/django-projects/myproject$ more 
myapp/templatetags/mytags.py 


from django import template 

register = template.Library() 

@register.simple_tag 
def myclass(request): 
    return request.path 

मैंने INSTALLED_APPS में 'myapp' जोड़ा, और TEMPLATE_LOADERS अद्यतन किया (जैसा कि stackOverflow से एक सुझाव के अनुसार):

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader', 
    'django.template.loaders.app_directories.Loader', 
    'django.template.loaders.eggs.Loader', 
    'django.template.loaders.app_directories.load_template_source', 
) 

जब मैं सर्वर शुरू करता हूं तो मुझे यह चेतावनी संदेश दिखाई देता है:

/usr/local/lib/python2.6/dist-packages/django/template/loaders/eggs.py:4: 
UserWarning: Module _mysql was already imported from 
/usr/lib/pymodules/python2.6/_mysql.so, but 
/usr/lib/pymodules/python2.6 is being added to sys.path 

जब मैं खोल में अपना मॉड्यूल आयात करने का प्रयास करता हूं तो मैं इसे आयात करने में असमर्थ हूं:

>>> from django.templatetags import mytags 
Traceback (most recent call last): 
File "<console>", line 1, in <module> 
ImportError: cannot import name mytags 
>>> from myapp.templatetags import mytags 
Traceback (most recent call last): 
File "<console>", line 1, in <module> 
ImportError: No module named templatetags 

क्या इसका मतलब है कि मेरे पथ या सेटअप में कुछ गलत है? कोई विचार?

+3

क्या आपके पास 'myapp' निर्देशिका में' __init __। Py' भी है? – Wolph

+0

अच्छा सवाल। हां, मैं करता हूं: नाट @ नेट-डेस्कटॉप: ~/काम/django-projects/myproject $ ls myapp/ __init__.py models.py templatetags Views.py __init __। Pyc models.pyc tests.py views.pyc –

+0

मुझे 'ls' से आउटपुट दर्ज करने में कठिनाई हो रही है। अंडरस्कोर बोल्ड टेक्स्ट में परिवर्तित हो जाते हैं। यह डबल अंडरस्कोर init.py डबल अंडरस्कोर दिखाना चाहिए। –

उत्तर

15

मेरी समस्या एक टाइपो के कारण थी। मैंने templatetags __init.py__ में फ़ाइल को बुलाया लेकिन इसे __init__.py नाम दिया जाना चाहिए था।

85

इसमें शामिल अन्य लोगों के लिए एक नोट: आपको अपने django ऐप में नई फ़ाइलों को पंजीकृत करने के लिए विकास सर्वर को पुनरारंभ करने की आवश्यकता है।

+1

यह मेरी समस्या तय है, धन्यवाद! – Symmetric

+7

वैसे नाली के नीचे 20 मिनट है लेकिन आपने मुझे किसी भी दर पर 20 और बचा लिया है। धन्यवाद। – chucksmash

7

मुझे एक ही समस्या थी। समस्या यह थी कि मैं साझा templatetags निर्देशिका का उपयोग कर रहा था, और उसमें __init__.py नहीं था। उस फ़ाइल को जोड़ा गया, सर्वर को पुनरारंभ किया गया, और सब ठीक था।

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