Saya memiliki kode ini (yang tidak memberi saya hasil yang diharapkan)
#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>
template anak:
#subject_file_upload.html
<form action="." method="post" enctype="multipart/form-data">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="submit">
</form>
dan pandangan saya
#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))
Kode di atas membuat HTML seperti yang saya inginkan, namun formulir tidak memperbarui database.
TAPI,
Jika saya melewatkan template tengah dan langsung membuka formulir pengunggahan, itu berfungsi dengan baik:
#subject_content.html
{% block main-menu %}
{% include "subject_file_upload.html" %}
{% endblock %}
Tolong bantu saya untuk membuatnya bekerja dengan template tengah. Saya ingin melakukan ini, karena saya tidak ingin mengetik kode yang sama lebih dari sekali.
include
denganwith
?Jawaban:
Seperti yang disarankan @Besnik, ini sangat sederhana:
{% include "subject_file_upload.html" with form=form foo=bar %}
The dokumentasi untuk
include
menyebutkan ini. Itu juga menyebutkan bahwa Anda dapat menggunakanonly
untuk merender template dengan variabel yang diberikan saja, tanpa mewarisi variabel lain.Terima kasih @Besnik
sumber
context["these_items"]
dancontext["other_items"]
saya dapat menggunakan termasuk dengan ini untuk mengganti{% for item in these_items %}
dengan{% for item in other_items %}
?