Django表单动作“。”重新加载缺少子弹的同一页面

时间:2019-05-03 07:30:48

标签: python django django-forms

我正在遵循一个基本教程,该教程向博客文章详细信息页面添加了评论。我正在使用absolute_url方法导航到详细信息页面,它工作得很好。

def get_absolute_url(self):
return reverse('blog:post_detail',
               args=[self.publish.year,
                     self.publish.month,
                     self.publish.day,
                     self.slug])

这是由get_absolute_url创建的示例URL

http://localhost:8000/blog/2019/5/2/second-post

但是,当我在详细信息页面中使用action =“。”提交表单时,它仅返回日期参数,并且缺少子句部分。

<form action="." method="post">
  {% csrf_token %}
  {{ comment_form.as_p }}
  <p><input type="submit" value="Add comment"></p>
</form>

这是返回的网址

http://localhost:8000/blog/2019/5/2/

添加action="{{ post.get_absolute_url }}"似乎可以解决问题,但是我正在关注的书Django 2 By Example告诉它应该可以与action =“一起正常使用。”

我是Django and Development的新手,非常感谢您的帮助和理解,无论该问题是否是:)

1 个答案:

答案 0 :(得分:3)

您没有显示URL模式,但是它们都应以/结尾。因此,http://localhost:8000/blog/2019/5/2/second-post的原始URL应该为http://localhost:8000/blog/2019/5/2/second-post/。例如,模式可能是:

path('blog/<int:year>/<int:month>/<int:day>/<slug:slug>/', views.blog, 'blog'),

以斜杠结尾,因此生成的路径也将以斜杠结尾。然后发布到“。”将正常工作。