2010-09-14 26 views
30

मान लीजिए कि मेरे पास 'get_item' दृश्य है, मैं URL की निम्न PHP शैली के लिए URL पैटर्न कैसे लिखूं?Django और क्वेरी स्ट्रिंग पैरामीटर

http://example.com/get_item/?id=2&type=foo&color=bar 

(मैं यूआरएल यानी के मानक 'अच्छा' प्रकार का उपयोग नहीं कर रहा हूँ: http://example.com/get_item/2/foo/bar के रूप में यह व्यावहारिक नहीं है)

विशेष रूप से, मैं कैसे मैं दृश्य प्रतिक्रिया कर करते हैं जब उपयोगकर्ता ऊपर एक ब्राउज़र में, और मैं पैरामीटर कैसे एकत्र करूं और इसे अपने दृश्य में कैसे उपयोग करूं?

मैंने कम से कम आईडी भाग को सही करने की कोशिश की लेकिन इसका कोई फायदा नहीं हुआ। दृश्य नहीं चलेगा जब मैं अपने ब्राउज़र में इस टाइप http://example.com/get_item?id=2

मेरे यूआरएल ढांचा:

(r'^get_item/id(?P<id>\d+)$', get_item) 

मेरा विचार:

def get_item(request): 
    id = request.GET.get('id', None) 
    xxxxxx 

संक्षेप में, मैं कैसे यूआरएल के Php की शैली लागू करते हैं django में क्वेरी स्ट्रिंग पैरामीटर के साथ पैटर्न?

(r'^get_item/$', get_item) 

और आपके विचार कोड काम करेगा:

+0

कैसे एक अच्छा यूआरएल get_item/2/foo/bar के बारे में है, और उससे मेल खाता है? तो हम get_item/2/पैंट/लाल हो सकता है। – dotty

उत्तर

17

तुम बस करने के लिए अपने यूआरएल ढांचा बदलने की जरूरत है। Django में यूआरएल पैटर्न मिलान वास्तविक पथ के लिए क्वेरीस्ट्रिंग नहीं है।

45

इस तरह अपने पैटर्न बनाओ:

(r'^get_item/$', get_item) 

और अपने ध्यान में रखते हुए:

def get_item(request): 
    id = int(request.GET.get('id')) 
    type = request.GET.get('type', 'default') 

हालांकि सामान्य विवरण दृश्य के लिए आदि आप में यूआरएल में आईडी/स्लग रख दिया और नहीं करना चाहिए क्वेरी स्ट्रिंग! प्राप्त पैरामीटर का प्रयोग करें उदाहरण के लिए। वर्तमान पृष्ठ आदि को निर्धारित करने के लिए सूची दृश्य फ़िल्टर करने के लिए ...

+3

उत्तर के लिए धन्यवाद। मुझे ये अब मिला। Urls.py में पैरा के लिए पूरा करने के लिए पुनः उपयोग करने की आवश्यकता नहीं है। अनुरोध का उपयोग कर विचारों में बस पैरा एकत्र करें। Get.get() – Ben

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