アプリケーションの一部として、1つのhtmlページに結合したいという簡単なメモがあります。1つのページにはメモを送信するためのフォームがあり、もう1つのページには結果が表示されます。フォームと結果の両方を同じページに表示したいと思います。
これを実現するためにDjangoのテンプレート継承を使用しようとしていますが、結果が計画どおりに機能していません。私のやり方で(明らかに不適切に)使用すると、結果が表示されず、フォームの[送信]ボタンのみが表示されます。実際の形ではありません。
これはかなり単純なはずですが、私はいくつかのバリエーションを試し、潜在的なソリューションとテンプレートのドキュメントを何時間も調査しましたが、成功しませんでした。
私が間違っていることを説明できる人がいれば、それは非常にありがたいです。
基本的なフォームテンプレートを使用したコードは次のとおりです。
{% extends 'base.html' %}
{% block page_title %}Notebook{% endblock %}
{% block headline %}Notebook{% endblock %}
{% block content %}
<h2>Headline</h2>
<div class="row">
<div class="span8">
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" class="btn btn-primary" value="Submit" />
</form>
</div>
</div>
{% endblock %}
そして、これが、フォームと結果の両方を理想的に含む、意図された拡張フォームです。
{% extends 'report/write_note.html' %}
{% block extendscontent %}
<div class="span4 offset8">
{% if notes %}
{% for note in user.notes.all reversed %}
<h3>{{ note.title }}</h3>
<p>{{ note.date }}</p>
<p>{{ note.copy }}</p>
{% endfor %}
{% else %}
<p>You have no notes stored.</p>
{% endif %}
</div>
{% endblock extendscontent %}
そしてここに見解があります:
@login_required
def submit_note(request):
if request.method == 'POST':
notes_form = NotesForm(request.POST, request.FILES)
if notes_form.is_valid():
new_note = notes_form.save(commit=False)
new_note.author = request.user
new_note.save()
return HttpResponseRedirect( "" )
else:
notes_form = NotesForm()
return render_to_response("report/write_note.html", {'form': notes_form}, context_instance=RequestContext(request))
@login_required
def all_notes(request):
all_notes = Notes.objects.all().order_by('-date')
paginate = paginated_stories(request, all_notes)
return render_to_response("report/notes.html",
{'notes': paginate},
context_instance=RequestContext(request))