兄弟们,姐妹们,各位Django赛道上的码农朋友们!今天咱们不聊枯燥的MVT,也不扯复杂的ORM。我们来解决一个看似简单,却处处暗藏玄机的问题——页面跳转。
你是不是还在视图函数里这样写?
from django.http import HttpResponseRedirect
from django.urls import reverse
def my_old_view(request):
# ... 一些逻辑
return HttpResponseRedirect(reverse('new_view_name'))
或者更原始的:
return HttpResponseRedirect('/some/url/')
停!放下你手中的键盘!是时候请出我们今天的主角,Django通用视图家族里的“闪现大师”—— RedirectView 了!
它就像是你网站里的“任意门”或者游戏里的“闪现技能”,专门负责把用户从一个地方“嗖”的一下送到另一个地方。但它的本事,可远比你想象的要大得多。
一、初见RedirectView:它是个啥玩意儿?
简单来说,RedirectView是一个类视图(Class-Based View)。Django官方觉得,像重定向这种常见的操作,没必要让每个开发者都重复写差不多的代码,于是就把这个功能打包成了一个类。
你可以把它理解为一个跳转工具箱。以前你需要自己找工具(导入模块)、组装工具(写逻辑)、最后执行跳转。现在,Django直接给了你一个成品工具箱,你只需要告诉它“跳到哪里去”,它就能帮你完美搞定。
它的核心价值就两个字:省事和专业。
二、RedirectView的“内核驱动”:永久与临时的哲学
在深入代码之前,我们必须搞清楚一个关键参数:permanent。
这玩意儿决定了HTTP状态码是 301 Moved Permanently 还是 302 Found。
permanent = True(永久重定向,301)
-
- 场景:你的网站结构发生了永久性改变。比如,一个产品的详情页URL从
/product/123/改成了/goods/123.html。 - 好处:搜索引擎(如Google、百度)会把这个跳转关系记
- 场景:你的网站结构发生了永久性改变。比如,一个产品的详情页URL从

最低0.47元/天 解锁文章
8万+

被折叠的 条评论
为什么被折叠?



