【问题标题】:Form not submitting information (Django)表单未提交信息(Django)
【发布时间】:2015-04-02 01:27:38
【问题描述】:

我正在尝试为 django 博客项目创建 cmets,但单击表单提交按钮时没有执行任何操作。

这是模板的 html。

<form role="form" method="post">
    <div class="input-group">
        {% csrf_token %}
        {% for field in form %}
        {{ field }}
        {% endfor %}
        <p>Comment: </p>
      <span class="input-group-btn">
        <button class="btn btn-default" type="submit">Submit</button>
      </span>
    </div>
</form>

这是我按下按钮时尝试调用的视图。

def detail(request, slug):
    context ={}
    post = BlogPost.objects.get(slug=slug)
    # print(request.method)
    if request.method=='POST':
        form = CommentForm(request.POST)
    else:
        form = CommentForm()
    if form.is_valid():
        t = form.save(commit=False)
        t.commentTime = datetime.datetime.now()
        t.save()
        return HttpResponseRedirect(reverse('blogpost_detail'))
    comment_list=Comments.objects.order_by('-commentTime')[:25]
    context = {'comment':comment_list,'form':form, 'post': post}
    return render(request, 'blog/blogpost_detail.html', context)

这是模板中调用的表单。

class CommentForm(forms.ModelForm):
    class Meta:
      model = Comments
      fields=('commentText', 'commentImage',)
      exclude =('post','commentTime',)
      widgets={
           'commentText': forms.Textarea(attrs={'col':10}),
       }

感谢您的帮助!

【问题讨论】:

  • 您的form.is_valid 应该在POST 检查内。如果不这样做,form.is_valid 每次都会评估(即使是 GET),这不是您打算做的。此外,请确保当前 URL 是您打算 POST 到的位置。或者您必须明确指定 action
  • 您的form 标签没有action&lt;form action="/url/to/post/to" ...&gt;
  • 感谢大家的建议! @karthikr 我在我想发布的网址上,但点击时它仍然没有做任何事情。
  • 按原样按下按钮时会发生什么 - 页面会重新加载吗?为了调试,我会在if form.is_valid() 块上放置一个else 块——系统设置为现在这样,不通过表单的POST 和GET 之间没有明显的区别。表单可能每次都提交,但由于表单数据无效而静默失败。

标签: python django forms django-templates


【解决方案1】:

您需要在表单标签中添加action 属性。由于您发布到相同的 URL,它应该是

<form action="." method="post " role°"form">

【讨论】:

    猜你喜欢
    • 2021-11-28
    • 2012-03-09
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    相关资源
    最近更新 更多