Django URL 重定向后没有改变

Django URL does not change after Redirection

我正在通过一本在线书籍学习 Django 1.7 "Tango with Django 1.7"。

本教程创建了一个 "Link Directory",其中包含类别和与类别相关的 Web 链接。

当我将页面添加到类别时说 "django" 使用以下 url:

http://localhost:8000/rango/category/django/add_page/

我使用以下 return 语句成功执行页面添加后重定向(重定向到类别页面)

return category(request, category_name_slug)

虽然重定向成功,但浏览器中的 url 没有更改为

http://localhost:8000/rango/category/django/

还是一样

http://localhost:8000/rango/category/django/add_page/

我也应该怎样改变 url。

提前致谢。

调用视图 category(request, category_name_slug) 实际上不是重定向。要请求,您应该使用 HttpResponseRedirect() 并执行类似

的操作
return HttpResponseRedirect(reverse("<your_category_url>", 
                           <kw_params_of_your_url>))

您没有重定向。 return category(request, category_name_slug) 只是 returns 视图的响应,没有任何重定向。

使用redirect快捷方式:

from django.shortcuts import redirect

return redirect('name-of-category-url', category_name_slug)

顺便说一句,如果您的 Category 模型有 get_absolute_url() 方法,那么您可以重定向到所需的类别实例而不会弄乱 url names/parameters:

return redirect(category)