重定向后Django URL不会更改

时间:2015-01-29 06:16:57

标签: python django redirect django-1.7

我正在通过在线书“Tango with Django 1.7”学习Django 1.7。

本教程创建一个“链接目录”,其中包含与类别相关的类别和Web链接。

当我使用以下网址向某个类别添加页面时说“django”:

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

使用以下返回语句

成功执行页面添加后,我重定向(重定向到类别页面)
return category(request, category_name_slug)

虽然重定向成功,但浏览器中的网址未更改为

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

并且它保持不变

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

我该怎么做才能更改网址。

提前致谢。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

您没有重定向。 return category(request, category_name_slug)只返回视图的响应而不进行任何重定向。

使用redirect快捷方式:

from django.shortcuts import redirect

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

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

return redirect(category)