2014-02-22 25 views
0

我正在開發一個Django項目,現在我正在構建一個搜索表單,通過它可以查找用戶的ID。 在搜索頁面模板,我有這樣的:按用戶名搜索用戶並重定向到Django中的用戶頁面

<form action="??" method="post"> 
{% csrf_token %} 
<ul><p>User ID<input type="text" name="uid" size="20" maxlength="40"/> 
<input type="submit" name="submit" value="Search" /></p></ul></form> 

在views.py:

def user_by_id(request, uid): 
    get_user_by_id = User.objects.get(pk=uid) 
    template = loader.get_template('user_search_result.html') 
    context = RequestContext(request, { 
     'q1': get_user_by_id, 
    }) 

return HttpResponse(template.render(context)) 

現在我已經爲用戶準備好個人網頁,有網址/用戶/ UID(PK )。我應該選擇什麼模板中的表單動作,我留下了?以上?另外,我需要在urls.py中寫入什麼?

我主要urls.py是:

url(r'^users/', include('users.urls', namespace="users")) 

,然後用戶/ urls.py個人資料頁是:

url(r'^(?P<uid>\d+)/$', views.profile_page, name='profile_page') 

回答

0

你不可錯過的一個形式的結果URL。表單將作爲GET或POST變量的一部分發送,因此您的視圖需要從那裏獲取,而不是從URL參數獲取。

所以,你的觀點必須:

def user_by_id(request): 
    uid = request.GET['uid'] 
    ...etc... 

和你的urls.py是

url(r'^user_by_id/$', user_by_id, name="user_by_id") 

和您的形式是:

<form action="{% url 'user_by_id' %}" method="GET"> 

(注意:我已經改變從POST到GET的方法,因爲你沒有改變數據庫中的信息,你只需要查看一些東西)。

+0

嗨@丹尼爾,謝謝你的回答。我得到這個錯誤:NoReverseMatch在/用戶/搜索/ 反向'user_by_id'參數'()'和關鍵字參數'{}'未找到。你知道我應該怎麼做嗎? – user2857014

+0

你的urls.py現在看起來像什麼? –

+0

我使用了url(r'^ user_by_id/$',user_by_id,name =「user_by_id」),就像您評論過的一樣。 – user2857014

相關問題