如何使用 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 表单