2011-08-24 8 views
10

मैं थोड़ी देर के लिए एक django प्रोजेक्ट पर काम कर रहा हूं जो व्यवस्थापक के लिए grappelli का उपयोग करता है और अचानक अचानक मेरा change_form.html टेम्पलेट निम्न त्रुटि फेंक रहा है:Django-grappelli व्यवस्थापक: कोई रिवर्स मिलान त्रुटि

Caught NoReverseMatch while rendering: Reverse for "grp_related_lookup" with arguments '()' and keyword arguments '{}' not found. 

कोड का उल्लंघन करने वाली लाइन लाइन 38 है:

37 $.each(related_lookup_fields_fk, function() { 
38  $("#id_" + this).grp_related_fk({lookup_url:"{% url grp_related_lookup %}"}); 
39 }); 

जो कोड के इस बिट से पहले किया जाता है:

var related_lookup_fields_fk = {% get_related_lookup_fields_fk adminform.model_admin %}; 

जाहिर है यह {% url grp_related_lookup %} बिट है जो समस्या पैदा कर रहा है।

मुझे समझ में नहीं आता कि टेम्पलेट grp_related_lookup से grappelli.views.related.related_lookup को कैसे हल कर रहा है। मैंने grp_related_lookup को grappelli.views.related.related_lookup के साथ बदलने की कोशिश की है और यह भी काम नहीं करता है। इसके अलावा, टेम्पलेट में हमलावर लाइन इस तरह दिखता है:

$("#id_" + this).grp_related_fk({lookup_url:"{% url grp_related_lookup %}"}); 

लेकिन त्रुटि संदेश में यह इस तरह दिखता है:

$("#id_" + this).grp_related_fk({lookup_url:"{% url 'grp_related_lookup' %}"}); 

मैं एकल grp_related_lookup आसपास उद्धरण कुछ हो सकता है अगर पता नहीं है समस्या के साथ करने के लिए या नहीं। क्या डीजेंगो ने फंक्शन कॉल कैसे दिया? क्या यह यूआरएल टेम्पलेट टैग में स्ट्रिंग 'grp_related_lookup' गुजर रहा है? यदि हां, तो अचानक तोड़ने के कारण क्या हो सकता है?

कुछ अतिरिक्त जानकारी:

  • related_lookup_fields का मूल्य एक खाली सूची [] है। मैं अपने admin.py में किसी भी related_lookup_fields को परिभाषित नहीं कर रहा हूं।
  • मैंने grappelli.views.related.related_lookup दृश्य फ़ंक्शन में कुछ डीबग स्टेटमेंट फेंक दिए और ऐसा नहीं लगता है।
  • मैंने हाल ही में किसी भी टेम्पलेट को छुआ नहीं है।

उम्मीद है कि कोई मुझे सही दिशा में इंगित कर सकता है ... धन्यवाद!

उत्तर

19

क्या आपके पास अभी भी 'grappelli.urls' आपके URLconf में शामिल है? यही कारण है कि मैं देखता हूं कि इस त्रुटि का कारण होगा। आप python manage.py shell उपयोग करने का प्रयास कर सकते हैं: इस लाइन सही URL रिटर्न

from django.core.urlresolvers import reverse 
print reverse('grp_related_lookup') 

हैं, तो आप एक NoReverseMatch अपने खाके में नहीं मिलना चाहिए।

grp_related_lookup के आसपास उद्धरण चिंता नहीं होना चाहिए। {% url %} टैग उद्धृत और अनगिनत तारों को पहले तर्क के रूप में स्वीकार करता है, इसलिए django इसे तारों को उद्धृत करने के लिए सामान्यीकृत करता है। यह व्यवहार भविष्य में बदलने जा रहा है: आप अनजान तारों का उपयोग करके {% url %} पर टेम्पलेट चर को पास करने में सक्षम होंगे। {% url foo %} और {% url "foo" %} इसी परिणाम नहीं देंगे, इस बारे में विवरण के लिए 1.3 release notes देखें।

+0

हाँ मेरे पास मेरे URLconf में '(आर '^ ग्रैपपेली /' शामिल है ('grappelli.urls'))। मैंने खोल में आपके सुझाव की कोशिश की और यह भी एक त्रुटि फेंक रहा है। यूआरएल टेम्पलेट टैग के बारे में सिर के लिए धन्यवाद। – heavilyinvolved

+0

दिलचस्प ... अपने सभी यूआरएल पैटर्न प्रिंट करने का प्रयास करें और देखें कि यह कैसा दिखता है? Http://stackoverflow.com/questions/1828187/determine-complete-django-url-configuration – brutasse

+0

जैसे कुछ का उपयोग करना धन्यवाद! मेरे यूआरएल पैटर्न की जांच दो बार एक अच्छी कॉल थी। Grappelli यूआरएल पैटर्न वास्तव में गायब हैं। अब मुझे यह पता लगाने की जरूरत है कि कैसे और क्यों ... – heavilyinvolved

0

मैं यूआरएल के साथ एक समान मुद्दा था और पाया है कि मैं

{% load url from future %} 

जरूरत टेम्पलेट में अगर मैं उद्धृत यूआरएल टैग करना चाहते हैं। आधिकारिक django दस्तावेज में भी उल्लेख किया गया है: https://docs.djangoproject.com/en/1.3/ref/templates/builtins/#url

6

मुझे Django 1.5 और Grappelli 2.4.4 के साथ एक ही व्यवहार का सामना करना पड़ा।

समस्या मैं पड़ा ठीक करने के लिए urlpatterns में जोड़ने

url(r'^grappelli/', include('grappelli.urls')), 

1

मुझे आज इस समस्या का सामना करना पड़ा, जब मैंने व्यवस्थापक में डेटा हटाने की कोशिश की। Reverse for 'app_list' with arguments '()' and keyword arguments '{'app_label': ''}' not found.

मैं urls.py

समाधान में url(r'^grappelli/', include('grappelli.urls')) डाल दिया है बहुत अजीब है: बस नवीनतम संस्करण के लिए grappelli अद्यतन करें। (मैंने इसे 2.5.6 से 2.6.3 तक अपडेट किया)

+0

इसे दस्तावेज करने के लिए धन्यवाद! Django 1.7 में अपग्रेड करने के बाद मुझे बस एक ही समस्या थी। मेरी मार्केटिंग टीम मेरे दरवाजे को झुका रही है कि क्यों व्यवस्थापक उपकरण टूटा हुआ है। – Civilian

1

मुझे कल इस समस्या का सामना करना पड़ा। मैं इस्तेमाल किया Django-grapelli वह था जिसे FileBrowser स्थापना में शामिल किया गया था। मैंने Django-grapelli को अपग्रेड करके समस्या हल की। बस टाइप करें:

pip install --upgrade django-grappelli 
0

मैं इस एक ही समस्या का सामना कर रहे, लेकिन जब मैं सुझाव कंसोल परीक्षण चलाने मैं इस मिल:

urlpatterns = patterns(

    # Admin 
    url(r'^grappelli/', include('grappelli.urls')), 
    url(r'^admin/', include(admin.site.urls), name="admin"), 

    # main views 
    #url(r'^$', RedirectView.as_view(url='/admin'), name='home'), 

    # API 
    url(r'^api/', include('api.urls', namespace='api')), 
) 
:

Python 2.7.9 (default, Apr 7 2015, 07:58:25) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
(InteractiveConsole) 
>>> from django.core.urlresolvers import reverse 
>>> print reverse('grp_related_lookup') 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/Users/tsantor/.virtualenvs/project_env/lib/python2.7/site-packages/django/core/urlresolvers.py", line 579, in reverse 
    return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))) 
    File "/Users/tsantor/.virtualenvs/project_env/lib/python2.7/site-packages/django/core/urlresolvers.py", line 496, in _reverse_with_prefix 
    (lookup_view_s, args, kwargs, len(patterns), patterns)) 
NoReverseMatch: Reverse for 'grp_related_lookup' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 

और मेरे urls.py इस तरह दिखता है

मेरे पास Django (1.8.2) पर चल रहे नवीनतम ग्रैपपेली (2.6.4) भी हैं। वैसे, ऐसा लगता है कि यह तब होता है जब मैं दृश्य को एक्सेस करने और जोड़ने या संपादित करने का प्रयास करता हूं। नियंत्रण कक्ष और सूची विचार काम करते हैं।