私は2つのビュー、AddとEditビューを持つ基本的なダイアリーアプリケーションを持っています。追加ビューでユーザーが「追加」ボタンを押すと、データがデータベースに保存され、簡単なメッセージが表示されます。ユーザーが編集ビューで「更新」ボタンを押すと、データが更新され、最後の更新スタンプが追加されます。ビューをリンクしてそれらの間でデータを渡す最善の方法は何ですか?
これまでのところ、これらのビューは独立して実行されています。編集ビューでは、デフォルトで最後に保存されたエントリが読み込まれ、更新されます。
Add Viewに新しい日記項目を追加すると、編集ビューに移行して、必要に応じて編集と更新を行えるようにします。ビューをリンクして関連するデータを編集ビューに渡して、どのエントリ(データベースオブジェクト)を編集用にフェッチするのかを知るにはどうすればよいですか?また、編集ビューを使用して、GETなどの指定された日記エントリをフェッチすることもできます。だから、編集ビューはそれを呼び出す人には無関心で、読み込む日記項目を知っているだけです。
彼らは今あるとして追加し、編集ビューのコードは、以下に表示されます。クラスベースビューを事前に
def addEntry(request):
entryForm = None
if request.method == "POST":
entryForm = EntryForm(request.POST)
if entryForm.is_valid():
entryForm.save(commit = True)
request.method = "GET"
return entrySubmitted("Entry has been submitted")
else:
logger.info(entryForm.errors)
else:
# Set up view with new entry form
entryForm = EntryForm()
template = getEntryViewTemplate(entryForm)
return render(request, "DiaryEntry.html", template)
def editEntry(request):
# Get the latest entry from the database
entry = Entry.objects.last();
if request.method == 'GET':
entryForm = EntryForm(instance = entry)
else:
entryForm = EntryForm(request.POST, instance = entry)
if entryForm.is_valid():
entryForm.setLastUpdated(datetime.now())
entryForm.save(commit = True)
templateData = getEntryViewTemplate(entryForm)
return render(request, "EditEntry.html", templateData)
おかげで、
フランシス
はきっとあなただけの編集ビューにIDパラメータを渡すと、編集するオブジェクトを決定するためにそれを使用する必要が役立つことを願っていますか?チュートリアルでは、これを行う方法を正確に示しています。 –
@DanielRosemanチュートリアルを参照していますか? DjangoとPythonの新機能ですありがとうございました。 –
多くの場合、誰かがビューをリンクしていると言われると、複数のユーザー用に設計されたものを書いているという事実を完全に見落としてしまいます。代わりに、特定のビューに対応する* url *にリダイレクトしています – Sayse