2012-02-27 28 views
1

私はちょうどdjangoの学習を始めました。私はdjangoモデルからフォームを作成しました。送信ボタンをクリックすると、データがデータベースに保存されます。今私が欲しいものを以下に示すようなものです:djangoの関数に引数としてフォームsubmitから取得したパラメータを渡す方法

def do_create(request, password, dbname, admin_password, confirm_password, demo_data=False, language=None, **kw): 
:私はviews.pyにdo_create関数を定義するとき

#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), 

は今、私はこのような引数(ユーザーフォームのユーザデータ)を渡したいです

これはdjangoを使って可能ですか?どのようにこれを達成することができます。

答えて

2

保存されたuserの値を後で表示する方法は、ここをクリックしてください。

これは簡単です。ユーザーが保存されると、どのモデルインスタンスと同様に、pkの値が取得されます。これは、後続のビューのURLで使用できます。

from django.shortcuts import redirect 

... 

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

そしてdo_create中:contact

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

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

注私はredirectにURL名と引数に渡されてきた方法で、ハードコーディングするのではなくURL。

1

ビューに渡す必要はありません。それらをフォームに渡したいとします。そして、あなたはすでにこれをやっています:

form = UserForm(request.POST) 

フォームにPOSTデータを渡します。このデータで何かしたい場合は、フォーム検証後にform.cleaned_data辞書を使用してください。読書docsも良い考えです。

+0

私の質問は、同じ機能ではない別の機能で送信されたデータを取得する方法です。代わりに、HttpResponseRedirect( "/ contact/create_db") のurls.pyのcreate_dbはdo_createという別の関数を使用することに注意してください。このdo_create funtionには、送信されたデータを取得する場所があります。私の英語のために申し訳ありません。 – Inventillect

+1

@ user1053786ここにリダイレクトする必要はありません。 'form.save'メソッドで保存するものを行います。 – DrTyrsa

関連する問題