加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Django:将模板值发布到视图

发布时间:2020-12-20 11:29:20 所属栏目:Python 来源:网络整理
导读:问题: 我想发布到视图并使用隐藏值字段和提交按钮从模板传递值.提交按钮(即csrf_token)中的值通过,但隐藏值不通过.我从Wezkrug调试器检查过request.POST只包含表单值而不是隐藏字段中的’id’值. 背景: 该按钮将您带到可以输入注释的表单.我正在尝试包含用
问题:

我想发布到视图并使用隐藏值字段和提交按钮从模板传递值.提交按钮(即csrf_token)中的值通过,但隐藏值不通过.我从Wezkrug调试器检查过request.POST只包含表单值而不是隐藏字段中的’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必须为每次评论存储一个id,无论它们是否被评论过.

What is a more efficient way to pass variables from Template to View in Django?

关于如何在POST中包含隐藏值的任何想法?谢谢!

解决方法

views.py

def make_comment(request):
    if request.method == 'POST':
        if 'prepair_comment' in request.POST:
            review = get_object_or_404(Review,pk=request.POST.get('id'))
            form = CommentForm({'review': review.id})
            return render(request,{
                'form': form,})
        else: # save the comment

models.py

class CommentForm(ModelForm):
        class Meta:
               model = Comment
               exclude = ('user',)
               widgets = {'review': forms.HiddenInput()}

restaurant.html

<form method='POST' action='/add_comment/'>
    {% csrf_token %}
    <input type='hidden' value='{{ r.id }}' name='id'>
    <input type="submit" name='prepair_comment' value="Make a Comment">
</form>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读