为什么 HttpResponseRedirect 不更新 URL?

Why won't HttpResponseRedirect update the URL?

我想在我的应用程序的 URLs 中添加一个可选的 slug,就像 Stack Overflows 的 URLs:

http://whosebug.com/questions/<question_id>/<question_slug>,

其中 <question_slug> 是可选的。也就是说,如果你去

http://whosebug.com/questions/<question_id>,您将被重定向到 http://whosebug.com/questions/<question_id>/<question_slug>

我的urls.py:

url(r'^myapp/(?P<thing_id>\d+)/edit_thing/$', views.edit_thing, name='edit-thing'),
url(r'^myapp/(?P<thing_id>\d+)/(?P<thing_slug>[\w-]+)/edit_thing/$', views.edit_thing, name='edit-thing2'),

我的views.py:

def edit_thing(request, thing_id, thing_slug=None):
    thing = get_object_or_404(Thing, pk=thing_id)
    if thing_slug is None:
        thing_slug = thing.slug
        HttpResponseRedirect(reverse('myapp:edit_thing2', kwargs={'thing_id':thing_id, 'thing_slug':thing_slug}))
    # ... continued ...

这似乎可行,因为转到 myapp/1/ 确实呈现了我想要显示的模板,但浏览器中的 URL 没有更新为 myapp/1/<model-1-slug>,例如我想。我错过了什么?我不能像这样重定向到相同的视图吗?

您应该return 回复:

return HttpResponseRedirect(...)

考虑使用 redirect() 快捷方式,它可以做同样的事情,但代码要少得多。