【问题标题】:NoReverseMatch Django: keyword argumentsNoReverseMatch Django:关键字参数
【发布时间】:2012-12-11 16:56:08
【问题描述】:

为什么会返回NoReverseMatch

html:

{% url vote thing.id thing.slug %}

urls.py:

url(r'^vote/(?P<object_id>\d+)/(?P<slug>[w\-]+)/$', 'app.views.the_view', name='vote'),

views.py:

def the_view(request, object_id, slug):
    thing_list = Thing.objects.all()
    return render(request, 'vote.html', {'thing_list':thing_list})

【问题讨论】:

    标签: django django-urls


    【解决方案1】:

    您必须使用以下内容:

    {% url vote object_id=thing.id slug=thing.slug %}
    

    因为您已经明确命名了模式中的匹配组。

    请注意,从 Django 1.5 开始,您必须这样做:

    {% url 'vote' .. %}
    

    代替:

    {% url vote ..%}
    

    在此处的 django 文档中查看它https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#url

    【讨论】:

    • 谢谢,我尝试按照您的建议使用关键字参数,但仍然得到 NoReverseMatch。关于可能是罪魁祸首的任何其他想法?谢谢
    • 您的模式列表中是否还定义了任何其他 url?一个常见的错误是将宽匹配模式放在窄模式之前(例如,如果 r'^(?P.*)/$' 列在 r'^vote/$' 之前)导致第一个模式的持续匹配.
    猜你喜欢
    • 2018-04-21
    • 2013-08-06
    • 2023-03-15
    • 2013-10-11
    • 2019-07-21
    • 2021-10-02
    相关资源
    最近更新 更多