如何使用Python实现重定向并设置301302状态码?
- 内容介绍
- 文章标签
- 相关推荐
本文共计855个文字,预计阅读时间需要4分钟。
默认即是302,无需额外指定状态码。它适合即时跳转,比如表单提交后防止重复刷新,或用户未登录时跳转到登录页面。
常见错误是直接写return redirect('/login')却忘了函数得有return——不写就变成返回None,Flask会报TypeError: The view function did not return a valid response。
- 必须在视图函数里用
return redirect(...),不能只调用不返回 - 路径支持相对(
'/dashboard')和绝对('https://example.com'),但跨域跳转要注意浏览器限制 - 如果目标URL含中文或特殊字符,Flask会自动编码,不用手动调
urllib.parse.quote
Django中redirect()默认也是302,但参数更灵活
它能接受模型实例、命名URL、带参数的URL名,底层自动调reverse()生成路径。比手拼字符串安全,也避免硬编码URL。
容易踩的坑是传错参数类型:比如传了MyModel.objects.get(id=1)但该实例没定义get_absolute_url()方法,就会抛AttributeError: 'MyModel' object has no attribute 'get_absolute_url'。
本文共计855个文字,预计阅读时间需要4分钟。
默认即是302,无需额外指定状态码。它适合即时跳转,比如表单提交后防止重复刷新,或用户未登录时跳转到登录页面。
常见错误是直接写return redirect('/login')却忘了函数得有return——不写就变成返回None,Flask会报TypeError: The view function did not return a valid response。
- 必须在视图函数里用
return redirect(...),不能只调用不返回 - 路径支持相对(
'/dashboard')和绝对('https://example.com'),但跨域跳转要注意浏览器限制 - 如果目标URL含中文或特殊字符,Flask会自动编码,不用手动调
urllib.parse.quote
Django中redirect()默认也是302,但参数更灵活
它能接受模型实例、命名URL、带参数的URL名,底层自动调reverse()生成路径。比手拼字符串安全,也避免硬编码URL。
容易踩的坑是传错参数类型:比如传了MyModel.objects.get(id=1)但该实例没定义get_absolute_url()方法,就会抛AttributeError: 'MyModel' object has no attribute 'get_absolute_url'。

