【问题标题】: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')

你能帮帮我吗?

【问题讨论】:

    标签: django python-3.x django-forms django-templates django-views


    【解决方案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作为表单字段,从表单数据中获取。
    • 哦,是的,我可以将其设为隐藏表单域并使用它。谢谢
    猜你喜欢
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    相关资源
    最近更新 更多