5

मैं की तरह कुछ करने के लिए कोशिश कर रहा हूँ:Django वर्ग आधारित दृश्य के लिए यूआरएल रिवर्स

urls.py में

:

views.py

.. 
HttpResponseRedirect(reverse('video_detail', kwargs={'pk': id, 'foo':'bar'})) 
... 

में

... 
url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail', kwargs={'foo:''}) 
... 

लेकिन यह नहीं करता है ' टी काम करने लगते हैं। मुझे तर्क '()' और कीवर्ड तर्क '{' pk ': 13240L,' foo ':' bar} 'के साथ' video_detail 'के लिए उल्टा मिलता है।

.... 
HttpResponseRedirect(reverse('video_detail', kwargs={'pk': id})) 
... 

अर्थात्:

हालांकि इस काम करता है। foo को हटा रहा है: रिवर्स कॉल से बार। ऐसा करने का सही तरीका क्या है और रिवर्स यूआरएल में अतिरिक्त तर्कों में पास किया गया है?

उत्तर

8

reverse एक ऐसा कार्य है जो यूआरएल बनाता है।

क्योंकि आप अपने URL पैटर्न में केवल pk पैटर्न निर्दिष्ट किया है, आप केवल pkreverse को तर्क के रूप में उपयोग कर सकते हैं (यह वास्तव में foo जोड़ना एक मतलब के बाद से उत्पन्न यूआरएल किसी भी foo मूल्य के लिए बिल्कुल वैसा ही होगा नहीं होगा)। आप foo जोड़ सकते हैं पैटर्न URL या एक से अधिक नामित यूआरएल बनाने के लिए, अर्थात्:

url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail', kwargs={'foo':''}) 
url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail2', kwargs={'foo':'bar'}) 

या

url(r'^(?P<pk>\d+)/(?P<foo>\w+)/$', VideoDetailView.as_view(), name='video_detail') 
संबंधित मुद्दे