当在视图函数之外时,有没有办法在Django中重定向到另一个页面。
我需要能够在我的应用中的任何地方重定向,而不仅仅是在我将HTTP响应返回给客户端时。
我尝试过重定向快捷方式:
from django.shortcuts import redirect
redirect("/some/url")
以及
redirect("http://someserver.com/some/url")
但这并没有明显的行动。
我需要PHP中的header("Location: /some/url");
,可以在脚本内的任何地方使用。
由于
答案 0 :(得分:9)
您可以滥用process_exception
中间件:
# middleware.py
from django import shortcuts
class Redirect(Exception):
def __init__(self, url):
self.url = url
def redirect(url):
raise Redirect(url):
class RedirectMiddleware:
def process_exception(self, request, exception):
if isinstance(exception, Redirect):
return shortcuts.redirect(exception.url)
然后你可以这样做:
from middleware import redirect
redirect('/some/url/')