1

我在 Django 中的反向 URL 查找有点麻烦。

从模板:

<form action="{% url 'blog:save' post.slug %}" method="post">

从网址:

url(r'^post/(?P<slug>\w+)/save/$', views.save, name='save'),

从意见:

def save(request, slug):
    return HttpResponse("Not Saved.")

我得到的错误:

Exception Type: NoReverseMatch
Exception Value:
Reverse for 'save' with arguments '(u'',)' and keyword arguments '{}' not found.
4

1 回答 1

3

post.slug模板中的变量是一个空字符串,但您的 url 需要 1 个或多个字符 ( \w+)。所以 Django builds /post//save/,但是这个 url 是无效的。

如果您需要保存没有 slug 的新帖子,请在 url 中使用可选的子模式:

r'^post/(?:(?P<slug>\w+)/)?save/'
于 2013-08-15T20:12:20.013 回答