Django

2009-10-25 4 views
10

में सुस्त यूआरएल सक्षम करें मैं एसजे का उपयोग करने वाले फॉर्म के Django में सुस्त यूआरएल को सक्षम करने की कोशिश कर रहा हूं: example.com/id/slug। मुझे स्लग सक्षम करने में कोई समस्या नहीं है, और वर्तमान में फॉर्म का सेट अप है: http://127.0.0.1:8000/articles/id/ (उदाहरण/आलेख/1 /) और यह ठीक काम करता है। इसी URLPATTERN है:Django

(r'^(?P<object_id>\d+)/$', 'django.views.generic.list_detail.object_detail', info_dict), 

अगर मैं करने के लिए URL पैटर्न बदलने के लिए:

जब मैं http://127.0.0.1:8000/articles/another-article/ पर नेविगेट
(r'^(?P<slug>\d+)/$', 'django.views.generic.list_detail.object_detail', info_dict), 

तो मैं निम्नलिखित eror प्राप्त:

The current URL, articles/another-article/, didn't match any of these.

अगर, हालांकि, मैं कोशिश करता हूं:

http://127.0.0.1:8000/articles/1/ 

मैं त्रुटि मिलती है:

No article found matching the query

अंत में मैं के माध्यम से एक aricle पर नेविगेट करने में सक्षम होना चाहते या तो:

http://127.0.0.1:8000/articles/1/ or http://127.0.0.1:8000/articles/1/another-article/

उत्तर

25

मैं चाहिए इस सवाल पूछ क्योंकि मैं समझ से पहले किया गया सिर्फ एक छोटे से अधिक रोगी है जवाब आउट:

(r'^(?P<object_id>\d+)/$', 'django.views.generic.list_detail.object_detail', info_dict), 
(r'^(?P<object_id>\d+)/(?P<slug>[-\w]+)/$', 'django.views.generic.list_detail.object_detail', info_dict), 

पहले पैटर्न फार्म के URL की अनुमति देता है/लेख/1/जिसका अर्थ है कि दूसरे URLPATTERN (स्लग शामिल करने के लिए) वैकल्पिक है।

+0

हाँ, आप वास्तविक स्लग के लिए रेगेक्स पैटर्न मिलान खो रहे थे। –