如何将参数从我的表单操作传递到视图?姜戈

Posted

技术标签:

【中文标题】如何将参数从我的表单操作传递到视图?姜戈【英文标题】:How to pass parameters from my form action to a view? Django 【发布时间】:2017-12-13 10:42:41 【问题描述】:

这是我的视图函数:它需要一个 kwarg,即 block_id

def write_comment(request, block_id):
    block=get_object_or_404(Block, pk=block_id)
    if request.method=='POST':
        form=Comment_form(request.POST)
        if form.is_valid():
            #do stuff
        else:
            return render(request,'writers_block/index.html', 'comment_form':form, 'block_form':Block_form())

要从我使用的模板表单中访问它:

%for block in block_list%
<form method="post" action="%url 'write_comment' block_id=block.id%">
%csrf_token%
comment_form
<input type="submit" value="submit">
</form>
%endfor%

不知何故,我总是收到一个 NoReverseMatch,说找不到带有该参数的 write_comment:

url模式是:

url(r'^write_comment', writers_block.views.write_comment, name='write_comment')

你能帮帮我吗?

【问题讨论】:

【参考方案1】:

你能像这样更改你的网址并尝试.. url(r'^write_comment/(?P&lt;block_id&gt;\d+)/$', writers_block.views.write_comment, name='write_comment')

【讨论】:

引号不应该涵盖整个正则表达式吗?像 (r'^write_comment/(?P\d+)/$' 还是应该只覆盖 'write_comment' 谢谢。有效。顺便说一句,我是否总是通过 url 传递参数?有什么办法可以直接通过模板传参数给视图吗? 是的,报价最高可达 $。现在我正确编辑了。 可以将block_id作为表单字段,从表单数据中获取。 哦,是的,我可以将其设为隐藏表单域并使用它。谢谢

以上是关于如何将参数从我的表单操作传递到视图?姜戈的主要内容,如果未能解决你的问题,请参考以下文章

从 JSF2 中的操作导航时如何传递视图参数?

如何将复杂的键值参数表单视图传递给mvc中的控制器?

如何在Spring Boot控制器类中传递参数(app正在使用Spring Security)

无法将参数从模板传递到 Django 视图

将一些参数从操作传递到表单视图

如何将数据从剃刀视图传递到 mvc3 中的控制器?