3

問題:

非表示の値フィールドと送信ボタンを使用して、ビューに投稿し、テンプレートから値を渡します。送信ボタンからの値 (つまり、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 に隠された値を含める方法についてのアイデアはありますか? ありがとう!

4

2 に答える 2