2012-07-24 20 views
50

I (bana beklenen sonucu vermez olan) bu kodu varatama değişkenler etiketi Django

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

çocuk şablonunu {%% ekleyin}

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

Yukarıdaki kod, olmasını istediğim şekilde HTML oluşturur, ancak form veritabanı güncellenmez. Ben orta şablonu atlayıp yükleme formuna doğrudan giderseniz

ANCAK,

, iyi çalışıyor: Beni memnun

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

Yardım orta şablonla çalışması için. Bunu yapmak istiyorum, çünkü aynı kodu bir kereden fazla yazmam. Gibi @Besnik önerdi

+12

'include' ile' with' kullanmayı denediniz mi? – Besnik

+0

@Besnik Teşekkür ederim !!!! İşe yarıyor!!! – Vor

cevap

127

, oldukça basit:

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

documentation for include bu bahseder. Ayrıca, diğer değişkenleri devralmadan, yalnızca verilen değişkenlerle şablonu oluşturmak için only kullanabileceğinizi belirtir.

Teşekkür ederiz @Besnik

+3

Şablonun yalnızca verilen değişkenlerle (ve ana içeriğin mirasını almaz) oluşturmasını istiyorsanız, "yalnızca" seçeneğini ekleyebilirsiniz: {% include "yol/to/template.html" formla birlikte = form only}} – gonz

+8

Tamlık için, işte "with" bağlantısı: https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#include – Timo

+0

Tarihsel not: https: // code .djangoproject.com/ticket/7817 – Paolo

İlgili konular