이 코드가 있습니다 (예상 결과를 얻지 못함).
#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>
하위 템플릿 :
#subject_file_upload.html
<form action="." method="post" enctype="multipart/form-data">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="submit">
</form>
그리고 내 견해
#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 %}
중간 템플릿으로 작동하도록 도와주세요. 같은 코드를 두 번 이상 입력하고 싶지 않기 때문에 이렇게하고 싶습니다.
답변
@Besnik이 제안한 것처럼 매우 간단합니다.
{% include "subject_file_upload.html" with form=form foo=bar %}
이에 대한 문서include
는 이것을 언급합니다. 또한 only
다른 변수를 상속하지 않고 주어진 변수로만 템플릿을 렌더링하는 데 사용할 수 있다고 언급 합니다.
감사합니다 @Besnik