2013-05-09 80 views
2

我必須有某種如何GET變量的誤解可以在Django被操縱,但這裏有雲:Django的清潔URL和表單數據

(1)我有一個具有兩個必需的參數搜索表單,和一個可選參數。

的形式發送到/搜索/像這樣:

<form action="/search/" method="GET"> 

然而,從這個看起來有點像

http://mylifeforregex:8000/search/?keyword=keyword&columns=name&exact=on 

導致的URL我不能在我的URL模式匹配它與下面的行:

url(r'^search/(?P<keyword>\w+)(?P<columns>\w+)(?P<exact>\w+)?$', 'home', name='searched') 

所以如果有人可以告訴我究竟是什麼做錯了這個r egex,它將不勝感激。 (2)我個人更有趣的問題是:有什麼辦法可以改變表單數據的呈現方式嗎?是否有可能有一個網址,看起來像

http://halp:8000/search/keywordquery/columnquery/optionmarked 

回答

1

在這種情況下,形式的查詢結果,沒有被追加到URL將匹配您的模式查詢字符串參數,因爲該模式是根本不一樣的。

您需要在您的「家」,以便挑選那些了這樣:

[variable] = request.GET.get([key]) 

爲了得到你期待的URL模式,你必須做一個POST到你的觀點,即手柄獲取值的表單,然後重定向到'/ search/[keyword]/[column]/[exact] /'

+0

請求後重定向意味着2次往返。 – g33kz0r 2013-07-02 21:19:03

+0

是的,但最終用戶將看不到處理帖子重新呈現的視圖。他們只會看到目標視圖。 – Brandon 2013-07-03 03:03:47

+0

如果他們有螢火蟲,或者你的服務器有延遲,他們可以「看到」它... – g33kz0r 2013-07-03 14:43:59