为什么 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()
快捷方式,它可以做同样的事情,但代码要少得多。
我想在我的应用程序的 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()
快捷方式,它可以做同样的事情,但代码要少得多。