2012-02-27 130 views
1

我剛開始學習django。我從django模型創建了一個表單。在點擊提交按鈕數據被存儲在數據庫中。現在,我想要的是像下面給出的一個:如何將表單提交的參數作爲參數傳遞給函數django

#view.py 
def contact(request): 
    if request.method == 'POST': 
    form = UserForm(request.POST) 
    if form.is_valid(): 
      user = form.save() 
      return HttpResponseRedirect("/contact/create_db") 

#urls.py 
(r'^contact/$', views.contact), 
(r'^contact/create_db$', views.do_create), 

現在,當我在views.py定義do_create功能我要傳遞的參數(用戶表單的用戶數據)這樣的:

def do_create(request, password, dbname, admin_password, confirm_password, demo_data=False, language=None, **kw): 

這是可能使用django。這怎麼能實現。

回答

2

你在這裏問的是如何在隨後的視圖中獲取保存的user的值。

好吧,這很簡單。一旦用戶被保存,它(像任何模型實例)獲得一個pk值。您可以在後續視圖的網址中使用它。

url(r'^contact/create_db/(?P<user_id>\d+)/$', views.do_create, 'do_create'), 

contact

from django.shortcuts import redirect 

... 

user = form.save() 
return redirect('do_create', kwargs={'user_id': user.pk}) 

而且在do_create

def do_create(request, user_id): 
    user = User.objects.get(pk=user_id) 

注意我在URL名稱和參數傳遞到redirect的方式,而不是硬編碼URL。

1

您不需要將它們傳遞到視圖中。你想把它們傳遞給一個表單。並且您已經在執行此操作:

form = UserForm(request.POST) 

您將POST數據傳遞到表單中。如果您想對此數據進行操作,請在表單驗證後使用form.cleaned_data字典。閱讀docs也是一個好主意。

+0

Acutally我的問題是我如何檢索提交的數據在另一個功能不在相同的功能。請注意,作爲回報,HttpResponseRedirect(「/ contact/create_db」) urls.py中的create_db將使用另一個名爲do_create的函數。它在這個do_create函數中,我將檢索我提交的數據。送我的英語 – Inventillect 2012-02-27 08:50:39

+1

@ user1053786你不需要在這裏重定向。用'form.save'方法來保存東西。 – DrTyrsa 2012-02-27 08:54:35

相關問題