2012-07-24 17 views
50

私は(私に期待される結果を与えるものではありません)このコードを持って割り当て変数タグジャンゴ

#subject_content.html 
{% block main-menu %} 
    {% include "subject_base.html" %} 
{% endblock %} 


#subject_base.html 
.... 
.... 
    <div id="homework" class="tab-section"> 
     <h2>Homework</h2> 
      {% include "subject_file_upload.html" %} 
    </div> 

子テンプレート{%は%を含ん}

#views.py 
@login_required 
def subject(request,username, subject): 
    if request.method == "POST": 
     form = CarsForm(request.POST, request.FILES) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect("/") 
    form = CarsForm() 
    return render_to_response('subject_content.html', {'form':form}, context_instance=RequestContext(request)) 

上記のコードでは、フォームはデータベースを更新しませんが、必要な方法でHTMLを作成します。

しかし、

私は真ん中のテンプレートをスキップしてアップロードフォームに直接移動した場合、それがうまく動作します

#subject_content.html 
{% block main-menu %} 
    {% include "subject_file_upload.html" %} 
{% endblock %} 

は、私はそれがミドルテンプレートを動作させるために助けてください。 同じコードを複数回入力する必要がないので、これを実行したいと思います。

+12

あなたは 'with'で' include'を使ってみましたか? – Besnik

+0

@Besnikありがとう!!!!できます!!! – Vor

答えて

127

@Besnikが提案のように、それは非常に簡単です:

{% include "subject_file_upload.html" with form=form foo=bar %} 

documentation for includeはこれを言及しています。 onlyを使用して、他の変数を継承せずに、指定された変数のみでテンプレートをレンダリングすることもできます。

ありがとうございます@Besnik

+3

テンプレートを指定された変数のみでレンダリングしたい場合(親コンテキストを継承しない場合)、フォームに{%include "path/to/template.html"という形式の "only"オプションを追加することができます=フォームのみ}} – gonz

+8

完全性を再度確認するには、「with」へのリンクがあります:https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#include – Timo

+0

ヒストリカルノート:https:// code .djangoproject.com/ticket/7817 – Paolo