私はDjangoで基本的なブログプラットフォームを作っています。新しい編集バージョンを保存できる編集ページを追加しました。また、削除オプションも追加しました。削除ボタンがクリックされると、削除の確認またはキャンセルを求める新しいテンプレートがレンダリングされます。 「はい」をクリックすると、必要に応じて投稿が削除されます。「いいえ」をクリックすると、「編集」ページに戻ります。問題は、 '編集'ページに戻ってそこにあるフォームにデータが入力されなくなると、すべてのフィールドが空になることです。すべてのデータが入力された状態で「編集」ページに戻るための「いいえ」オプションを設定できる方法はありますか?質問が不明な場合はアドバイスをお願いします。ありがとうございました。 .models輸入ブログからDjangoのインポートフォーム から2回目のDjangoフォームの再作成
views.py
def edit_post(request, slug):
post=get_object_or_404(Blog, slug=slug)
form = BlogForm(request.POST or None, instance=post)
context = {
'title': post.title,
'post': post,
'form': form,
}
if 'save' in request.POST:
if form.is_valid():
post=form.save(commit=False)
post.save()
return HttpResponseRedirect(post.get_absolute_url())
elif 'delete' in request.POST:
return render(request, 'Blog/confirm-deletion.html',delete_context)
#Now delete template is shown, and view takes 'yes' or 'no' option
elif 'yes' in request.POST:
post.delete()
messages.success(request, 'Post was successfully deleted')
return HttpResponseRedirect(reverse('post_list'))
elif 'no' in request.POST:
form = BlogForm(request.POST, instance=post)
context = {
'title': post.title,
'post': post,
'form': form,
}
return render(request, 'Blog/edit_post.html', context)
#PROBLEM HERE: CAN'T GET *NO* OPTION TO RETURN TO FILLED OUT FORM PAGE
return render(request, 'Blog/edit_post.html', context)
確認-deletion.html
{% extends 'Blog/base.html' %}
{% block content %}
<form method='POST' action = '' enctype='multipart/form-data'> {% csrf_token%}
<p>Are you sure you want to delete {{title}}?</p>
<input type = 'submit' name = 'yes' value = 'Yes'/>
<input type = 'submit' name = 'no' value = 'No'/>
</form>
{% endblock %}
forms.py
class BlogForm(forms.ModelForm):
class Meta:
model = Blog
fields = [
'title',
'category',
'content',
'draft'
]
をクリックすると「NO」、つまり '
@ Alasdairので、「編集」ページに再送信される情報は、ブログフォームではなく「はい/いいえ」フォームから来ています。なぜフィールドが空白になっているのでしょうか? –
@ Alisdairは、それを試しただけで完璧に動作します。あなたが答えとしてあなたのコメントを残したいのであれば、私はそれを最も役に立つものとして選択します。あなたの助けに大変感謝します。 –