在视图函数之外,是否有一种方法可以重定向到Django中的另一个页面。
我需要能够重定向到应用程序中的任何位置,而不仅仅是在将HTTP响应返回给客户端时。
我尝试了重定向快捷方式:
from django.shortcuts import redirect
redirect("/some/url")
还有
redirect("http://someserver.com/some/url")
但是这没有明显的作用。
我需要PHP中的header("Location: /some/url");
之类的东西,可以在脚本内的任何地方使用。
谢谢
您可能滥用/利用中间件的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/')
也不要忘记将RedirectMiddleware
添加到MIDDLEWARE_CLASSES
设置中。