2017-01-18 21 views
-2

質問は私のフォームが動的であることです。 DB内のデータに応じてフィールドが異なる可能性があります。私はこのフォームを手動でレンダリングすることができます(属性と型をコンテキストとしてテンプレートに渡すことによって)。しかし、どのように私はdjangoのサブミットボタンを押すのアクションを処理できますか?Djangoは手動でフォームを作成して送信します

答えて

1

すでにテンプレートをレンダリングするために、あなたのviews.pyに関数を持っていると仮定すると、あなただけの基本的に掲載したデータがあったかどうかを確認する必要があります。

def contact(request): # let's say it's a contact form 
    if request.method == 'POST': # If the form has been submitted... 
     print(request.POST) 
     # do your things with the posted data 
    else: # form not posted : show the form. 
     return render(...) 

はまた、あなたが手動で追加する必要があることに注意してくださいテンプレート内の<form></form>の間にある{% csrf_token %}のどこにでも置くことができます。これは基本的に、Cross Site Request Forgery攻撃からサイトを保護する隠しフィールドを追加します。

あなたがそれを好きなら、同じURLに投稿するように、フォームにaction属性を入れないでください。

+0

もう2つの質問があります。投稿された値をすべて取得するにはどうすればよいですか?そして、それはクラスベースのビューで可能ですか? –

+0

'request.POST.get( 'field_name')'クラスベースのビューについては、これをチェックしてください:https://docs.djangoproject.com/en/1.10/topics/class-based-views/intro/#handling-forms-クラスベースのビュー –

関連する問題