如何使用 Django 模板在 HTML 表单操作中向“current_url”/submit 提交 POST 请求?

Posted

技术标签:

【中文标题】如何使用 Django 模板在 HTML 表单操作中向“current_url”/submit 提交 POST 请求?【英文标题】:How to submit POST request to '"current_url"/submit' in HTML's form action using Django templates? 【发布时间】:2015-07-16 12:15:48 【问题描述】:

假设我有很多帖子,每个帖子都有一个网址example.com/post_id。在这篇文章之后还有一个 html 表单,人们可以在其中提交评论。如果我必须将此评论提交到此 url:example.com/submit,那么我可以这样做 <form action="submit/" method="post">。但是,我希望将此评论提交到此 url:example.com/post_id/submit,这样当它的视图被调用时,该视图可以访问post_id。这样我就可以将输入的评论与post_id 一起存储在数据库中。 (我可以通过request.path_info访问查看中的请求url。)

一种方法是在模板的 HTML 表单操作中传递 request.path 并与“提交”连接。但我无法做到这一点。可以做value|add:"submit"。但是我如何用request.path 代替价值呢?

tl;dr 使用 django 模板,如何将 post_id/submit url 传递给 HTML 表单操作。 (这里当前的网址是example.com/post_id。)

【问题讨论】:

【参考方案1】:

尝试解析/修改现有 URL 是个坏主意。但没有理由这样做。您的模板可能已经可以访问帖子本身,因此您应该使用它通过普通的% url % 标签构造 URL。

<form action="% url "submit_comment" post_id=post.id %" method="POST">

假设帖子以post 的形式传递给模板,并且有一个如下所示的urlconf:

url(r'(?P<post_id>\d+)/submit/$', views.submit_comment, name='submit_comment'),

【讨论】:

嘿,我无法让它工作。你能解释一下"% url ... %" 的工作原理吗?

以上是关于如何使用 Django 模板在 HTML 表单操作中向“current_url”/submit 提交 POST 请求?的主要内容,如果未能解决你的问题,请参考以下文章

django 如何写表单提交

如何使用基于类的视图在同一模板中使用两个不同的 Django 表单

如何使用 django 在模板中显示默认值?

为啥django不处理PUT方法带过来的表单

如何在Django的视图功能中访问Django模板中表单中的复选框[关闭]

基本模板上的 Django 表单