2016-06-28 5 views
0

私は何か、それらのリストを作成し、フォームを含むテンプレートを作成しようとしていますsomethings.If私はこれは私が持っているものである行うどのように入力テンプレート内の2つのビューが

def list_of_something(request): 
    list1=something.objects.all() 
    return render(request , 'index.html' ,{'list1':list1}) 
def post_something(request): 
    form_class=SomethingForm 
    if request.method="POST": 
     form=form_class(request.POST) 
     if form.is_valid(): 
     ......... 
     ........ 
     ........ 
    return render(request, 'post_something.html', {'form': form,}) 

景色を眺めることができます完了しました。

  1. 私はindex.htmlの中に入れてinclude{% include "post_something.html" %}を試してみましたが、それはpost_something.htmlをロードしますが、それは{{form.as_p}}ために取得するときには、それを読み込むdoesntの?
  2. 私はクラスベースのビューをチェックアウトしましたが、私は上記のことを行う方法を知っていません。私がやったbelow.What答えへ

UPDATE おかげで、ビューリターンrender(request,'index.html,{'list1':list1,'form':SomethingForm()})にフォームの名前を渡しindex.html.and {% include "post_something.html" %}を追加しました。 さらに、フォームのアクション属性をpost_somethingビューに設定すると、動作するはずです。

答えて

0

post_something.htmlはテンプレートの名前に過ぎませんが、依然としてフォームを渡す必要があります。私はlist_of_somethingビューを表示しようとしていると仮定しているので、そのビューのコンテキストデータにフォームを含める必要があります。

return render(request , 'index.html',{'list1':list1, 'form': SomethingForm()}) 
+0

ありがとうございます。私は試してみます – Bolaji

+0

あなたのソリューションでは、それはindex.html上のフォームを表示していますが、ビューpost_something()のビューのロジックはありません。フォームは値を受け入れてsubmitをクリックするだけですが消えてしまった.. – Bolaji

+1

@Bolajiテンプレートのフォームの 'action'属性を変更して、フォームデータを' post_something'ビューに送信する必要があります。 – Alasdair

0

あなたが{% include %}タグを使用する場合post_something.htmlの内容はindex.htmlにマージされますと仮定します。これで、マージされたテンプレートのすべての変数をビューから渡す必要があります。それはこのようにする必要があります:あなたはあなたのビジネスユースケースに基づいてformを定義することができ

return render(request, 
       'index.html', 
       {'list1':list1, 'form': form}) 

+0

ありがとうございます。私はそれを試してみます – Bolaji

+0

@sayseあなたの解決策ではindex.htmlしかし、post_something()のビューのロジックはありません。フォームはただ値を受け入れ、submitをクリックすると、それはなくなりました。 – Bolaji

関連する問題