2017-08-10 138 views
0

從一個星期以來,我搜索的時候沒有任何問題的答案。我不知道我是否以良好的方式繼續進行,但我嘗試擁有一個如下所示的網址:article/title/0/search=ad/2017-08-01/2017-08-09/;參數是(大括號):article/{filter}/{page}/search={search}/{date1}/{date2}/Django的url多個參數

我url.py正則表達式是:

url(r'article/(?P<filter>.+)/(?P<page>\d+)/(?:search=(?P<search>.*)/)?(?:(?P<date1>(\d{4}-\d{1,2}-\d{1,2})?)/)(?:(?P<date2>(\d{4}-\d{1,2}-\d{1,2})?)/)?$')

當值searchdate1date2被填充,我的網址認爲{searched word}/2017-08-01/2017-08-09/search值。

search,date1date2是空的,我的鏈接是這樣的:article/title/0/search=///。當日期填入article/title/0/search=/2017-08-01/2017-08-09/

在我的模板,我需要我的網址是這樣的:{% url "view" filter page search date1 date2 %}

有人能幫助我,糾正我,如果我在錯誤的方式做到了?

編輯

我會嘗試在其他的方式來重新問我的問題:

在我的模板,在具有有3個領域不需要search, date1 and date2形式,使他們能夠無(這是我的問題)。我有一些鏈接需要更改視圖參數filter, page中的一個,並在url中保留字段參數。 當表單POST到我的視圖(實際上是這樣的def AllArticle(request, filter, page, search="", date1="", date2=""))時,我用它們來過濾我的ArticleModel對象(我不需要幫助,已經完成並且工作)。

根據@Cory_Madden,我從來沒有使用過這種方法,我不知道如何使用它。我只是試了一下,django返回了一個MultiValueDictKeyError。

+0

您可以更具體地瞭解您的模型以及您想要過濾或搜索的內容。請更清楚地發佈您的模型和您的過濾器要求 –

+0

無論您使用'?'分隔的GET參數是否被*'not *'看作您的'urls.py'。只有url本身。 –

回答

1

這不是你如何使用GET參數。您需要從request對象訪問它們。因此,讓我們說你有一個基於功能視圖,這是你將如何訪問附加在網址中的任何GET參數:

def index(request, name='World'): 
    search_param = request.GET['search'] 
    ... 

而且你在這種情況下,網址如下:

url(r'/(?P<name>.*)', views.index) 

請求然後在地址欄中的路徑看起來像:

/Joe?search=search-term 

而且request.GET['search']將返回"search-term"

+0

這不起作用。它給我一個MultiValueDictKey錯誤。 – Trytio

+0

這很可能意味着你沒有在你的URL中提供一個GET參數。將其更改爲'search_param = request.GET.get('search','')' –