2012-08-29 16 views
5

मैं एक यूआरएल इस प्रकार के रूप में परिभाषित किया है।Django {% यूआरएल%} पैरामीटर के बिना टैग

मैंने {% url detail_view %} की कोशिश की, लेकिन मुझे एक त्रुटि मिली क्योंकि मैं id पैरामीटर निर्दिष्ट नहीं कर रहा हूं।

मुझे आईडी के बिना यूआरएल की आवश्यकता है क्योंकि मैं जेएस का उपयोग करके इसे जोड़ रहा हूं।

मैं इसे कैसे पूरा कर सकता हूं?

+2

उद्देश्य क्या होगा? यदि कोई आईडी आईडी पैरामीटर नहीं है तो यह यूआरएल मिलान नहीं किया जा सकता है, तो आप इसके लिए एक लिंक क्यों बनाना चाहते हैं? हो सकता है कि आप एक और समस्या हल करने की कोशिश कर रहे हैं और आपका समाधान सही नहीं है? –

+0

मैं जावास्क्रिप्ट का उपयोग कर आईडी जोड़ूंगा, लेकिन मैं यूआरएल जेएस वैरिएबल के रूप में रखना चाहता हूं। – AlexBrand

+1

आप हमेशा 'id = -1' के साथ रिवर्स का उपयोग कर सकते हैं (जिसे आप वैसे भी आईडी होने की उम्मीद नहीं करेंगे) और जब आपको आवश्यकता हो तो उचित आईडी के साथ दाएं -1 को प्रतिस्थापित करें। यदि आप मुझसे पूछें तो मुझे बहुत हैकिश लगता है, लेकिन हमेशा एक और यूआरएल परिभाषित करने से बेहतर है। –

उत्तर

6

बस अपने urls.py को यह पंक्ति जोड़ें:

url(r'^details/$', DetailView.as_view(), name='detail_view'), 

या:

url(r'^details/(?P<id>\d*)$', DetailView.as_view(), name='detail_view'), 

(यह एक क्लीनर समाधान है - थॉमस ओरोज्को करने के लिए धन्यवाद)

आप की आवश्यकता होगी यह निर्दिष्ट करने के लिए कि id आपके व्यू फ़ंक्शन में वैकल्पिक है:

def view(request, id=None): 
+0

नोट: दो urlpatterns के लिए एक अद्वितीय नाम होना चाहिए, इसलिए यदि आप इसे "detail_view" नाम देते हैं, तो अपने मूल का नाम "detail_view_with_id" जैसे किसी नाम पर बदलें। –

+2

यदि आप वैकल्पिक पैरामीटर को स्वीकार करने के लिए दृश्य को संशोधित करने जा रहे हैं, तो मुझे लगता है कि आप पैरामीटर वैकल्पिक भी बना सकते हैं: 'r'^विवरण/(? पी \ d *) $ ''। –

+0

आप टेम्पलेट में आईडी पैरामीटर कैसे निर्दिष्ट करते हैं '{% url detail_view%}' – user1629366

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