2012-11-02 14 views
78

हाय मुझे एक क्रूर समस्या है।Django तर्क '()' और कीवर्ड तर्क '{}' के साथ रिवर्स

मैं इस तरह एक यूआरएल ढांचा नहीं है:

# mproject/myapp.urls.py 

url(r'^project/(?P<project_id>\d+)/$','user_profile.views.EditProject',name='edit_project'), 

यह ब्राउज़र में लेकिन परीक्षण के लिए ठीक काम करता है, जब मैं खोल में ऐसा करते हैं:

from django.test import Client 
from django.core.urlresolvers import reverse 

client= Client() 
response = client.get(reverse('edit_project'), project_id=4) 

मैं खतरनाक मिलती है:

NoReverseMatch: Reverse for 'edit_project' with arguments '()' and keyword arguments '{}' not found. 

मुझे यहां क्या याद आ रही है?

उत्तर

147

आप project_id निर्दिष्ट करने के लिए है:

reverse('edit_project', kwargs={'project_id':4}) 

डॉक्टर here

+0

महान। धन्यवाद। मैं हर विन्यास कि एक को छोड़कर की कोशिश की है चाहिए है! –

+0

आप सका पो स्पष्ट रूप से यह भी शामिल है कि टेम्पलेट के भीतर इसे कैसे करें? –

+1

[डॉक्स] (https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#url) उदाहरण हैं – miki725

1

यह समस्याओं मुझे महान सिर दर्द दे दी है जब मैं सक्रियण लिंक पैदा करने के लिए रिवर्स का उपयोग और निश्चित रूप से ईमेल के माध्यम से भेजने की कोशिश की। तो मुझे लगता है test.py से यह वही होगा। यह करने के लिए सही तरीका पीछा कर रहा है:

from django.test import Client 
from django.core.urlresolvers import reverse 

#app name - name of the app where the url is defined 
client= Client() 
response = client.get(reverse('app_name:edit_project'), project_id=4) 
+0

मैंने अभी यह कोशिश की है, यह काम नहीं करता है। @ miki725 का जवाब सही है। –

+1

मेरा मानना ​​है कि एक ब्रेस गलत जगह पर है: प्रतिक्रिया = client.get (रिवर्स ('edit_project', project_id = 4)) –

-2

'APP_NAME' नाम स्थान आप यूआरएल config को दे दिया, और वास्तविक नहीं ऐप का नाम है।

सही यूआरएल कॉन्फ़िगरेशन - 'नेमस्पेस' में एक अतिरिक्त पैरामीटर जोड़ने का सही तरीका यह वास्तविक होगा 'app_name' जो user2517191 का उल्लेख किया गया था और client.get में 'edit_project' (रिवर्स ('app_name: edit_project') नाम पैरामीटर आप यूआरएल config को दे दिया होगा।

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