2012-08-22 25 views
6

我想做一些Django的URL匹配。Django URLS,使用?在URL

我想了幾個網址,在那裏我有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

?將不匹配「?」在URL內部,相反它有它自己的含義,你可以在這裏查看它:
Python Regular Expressions 如果你想匹配「?」的確切字符,在你的網址中,你必須以某種方式逃避它(因爲它在RegEx中有意義),所以你可能想用一個「\」(反斜槓) 來逃避它,所以你會寫\排序....

編輯:
好了,什麼你在評論中說,似乎這裏是你的問題,main?sort=popular發生在你的URL模式,當你渲染模板/main/sort=popularGET法詞庫的說法,只寫區分功能GETPOST,在GET部分,具有像sort_by = request.GET.get('sort',''),然後相應地用sort_by變量的值進行排序,就像:

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) 

並放手嗎?在url模式內部,當您使用GET參數請求頁面時,會添加該模式。

+0

我試過這樣做,不幸的是它並沒有真正解決 - 我不太清楚爲什麼。 – deakolt

+0

你可能也想發佈該代碼?但真的,這樣的網址開頭有個問號似乎很奇怪(排序=熱門) – SpiXel

+0

基本上,我有一個網頁,內容可以根據排序進行排序。 main?sort =流行排序意味着你仍然在主頁上,vs main/popular /哪種暗示着不同的頁面。我正在使用網址(r'^ \?sort = popular/$','base.views.main_popular',name ='main_popular') – deakolt

7

你不匹配這些對正則表達式。 ?之後的元素不是URL的一部分,它們是可通過request.GET從您的視圖訪問的查詢參數。

+0

Ahh我對網絡編程很感興趣,謝謝 - – deakolt