2012-08-22 16 views
6

में मैं कुछ Django यूआरएल मिलान करने की कोशिश कर रहा हूं।डीजेगो यूआरएलएस, एक का उपयोग कर? यूआरएल

मैं मेरे पास है, जहां कुछ यूआरएल चाहते http://mysite.com/base?sort=type1/, http://mysite.com/base?sort=type2/, आदि

मैं समझ नहीं कैसे इन भाव से मेल URL पर: मैं बहुत Django के लिए नए और रेग पूर्व पहले कभी उपयोग नहीं कर रहा हूँ।

मुझे अपने "आधार" में urls.py के लिए है अनुप्रयोग है:

url(r'^$','base.views.main, name='main'), 

मैं समझ नहीं क्या प्रश्न चिह्न के साथ मेरे यूआरएल मैच के लिए डाल करने के लिए।

मैं की तरह

url(r'^?sort=popular/$', 'base.views.main_popular', name='main_popular'), 

मदद के लिए धन्यवाद कुछ कोशिश कर रहा हूँ!

उत्तर

6

? एक "?" से मेल नहीं खाएगा यूआरएल के अंदर, इसके बजाय इसका अपना अर्थ है जिसे आप यहां देख सकते हैं:
Python Regular Expressions यदि आप "?" के सटीक चरित्र से मेल खाना चाहते हैं अपने यूआरएल के अंदर, आपको किसी भी तरह से बचाना होगा (क्योंकि इसका रेगएक्स में इसका अर्थ है) ताकि आप इसे "\" (बैकस्लैश) से बचाना चाहें ताकि आप \? sort ....

संपादित करें:
ठीक है तो क्या आप टिप्पणी में कहा है के साथ, यहाँ लगता है आपकी समस्या है, main?sort=popular अपने यूआरएल ढांचा पर तब होता है जब आप sort=popular की GET विधि शब्दकोश तर्क के साथ /main/ के लिए टेम्पलेट प्रदान कर रहे हैं, बस एक समारोह है कि अलग बीच बारे में GET और POST, GET भाग में, sort_by = request.GET.get('sort','') की तरह sth है और फिर sort_by चर के मान के अनुसार क्रमबद्ध करें, जैसे sth:

def main_handler(request): 
    if request.method == "POST": 
      whatever ... 
    if request.method == "GET" : 
      sort_by = request.GET.get('sort','') 
      if sort_by: 
       sort by what sort points to 
       return "the sorted template" 
    return render_to_response(the page and it's args) 

और उसमें जाने दो? यूआरएल पैटर्न के अंदर, जब आप किसी GET तर्क के साथ किसी पृष्ठ का अनुरोध करते हैं तो यह जोड़ा जाता है।

+0

मैंने ऐसा करने की कोशिश की, दुर्भाग्यवश यह वास्तव में काम नहीं कर रहा था - मुझे पूरा यकीन नहीं है कि क्यों। – deakolt

+0

आप भी उस कोड को पोस्ट करना चाहते हैं? लेकिन वास्तव में, ऐसा लगता है कि इस तरह के यूआरएल (सॉर्ट = लोकप्रिय) की शुरुआत में एक प्रश्न चिह्न होना अजीब लगता है – SpiXel

+0

अच्छी तरह से मेरे पास एक वेबपृष्ठ है, जिसमें सामग्री के आधार पर सॉर्ट किया जा सकता है। मुख्य? सॉर्ट = लोकप्रिय प्रकार का तात्पर्य है कि आप अभी भी मुख्य पृष्ठ पर हैं, बनाम मुख्य/लोकप्रिय/किस तरह का एक अलग पृष्ठ का तात्पर्य है। मैं यूआरएल (आर '^ \? सॉर्ट = लोकप्रिय/$', 'base.views.main_popular', name = 'main_popular') का उपयोग कर रहा था – deakolt

7

आप रेगेक्स के खिलाफ इन्हें मेल नहीं खाते हैं। ? के बाद के तत्व URL का हिस्सा नहीं हैं, वे क्वेरी पैरामीटर हैं जिन्हें request.GET के माध्यम से आपके दृश्य से एक्सेस किया जा सकता है।

+0

आह मैं वेब प्रोग्रामिंग के लिए इतना नब हूं, धन्यवाद - – deakolt