問題:
非表示の値フィールドと送信ボタンを使用して、ビューに投稿し、テンプレートから値を渡します。送信ボタンからの値 (つまり、csrf_token) は通過しますが、非表示の値は通過しません。非表示フィールドからの値request.POST
ではなく、フォーム値のみを含む Wezkrug デバッガーから確認しました。'id'
バックグラウンド:
ボタンをクリックすると、コメントを入力できるフォームに移動します。review.id
コメントを簡単にするために、ユーザーがコメントしている を含めようとしています。テスト目的ではなく、「テスト」という値を持っています。
私のフォーム:
<div>
<form method='POST' action='/add_comment/'>
{% csrf_token %}
<input type="hidden" name='id' value='test'>
<input type="submit" value="Make a Comment">
</form>
</div>
コメント ビュー:
@login_required
def make_comment(request):
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
comment = form.save(commit=False)
comment.user = request.user
comment.save()
# render?
return HttpResponseRedirect('/results/', {
'restaurant': get_object_or_404(
Restaurant,
name=request.POST['name'],
address=request.POST['address']
)
})
else:
form = CommentForm()
return render(request, 'stamped/comment.html', {'form': form})
コメント モデル:
class Comment(models.Model):
content = models.TextField()
review = models.ForeignKey(Review)
user = models.ForeignKey(User)
date_added = models.DateTimeField(auto_now_add=True)
コメント ModelForm コード:
class CommentForm(ModelForm):
class Meta:
model = Comment
exclude = ('user', 'review',)
私はこの質問の戦術に従おうとしましたが、request.session dict を使用することは望ましくありません。これは、コメントされているかどうかに関係なく、すべてのレビューの ID を保存する必要があるためです。
Djangoでテンプレートからビューに変数を渡すより効率的な方法は何ですか?
POST に隠された値を含める方法についてのアイデアはありますか? ありがとう!