8

ビュー機能の外にあるときにDjangoの別のページにリダイレクトする方法はありますか?

HTTP応答をクライアントに返すときだけでなく、アプリ内のどこにでもリダイレクトできる必要があります。

リダイレクトショートカットを試しました:

from django.shortcuts import redirect
redirect("/some/url")

そしてまた

redirect("http://someserver.com/some/url")

しかし、これは目立った行動ではありません。

header("Location: /some/url");スクリプト内のどこでも使用できるPHPのようなものが必要です。

ありがとう

4

1 に答える 1

13

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設定に追加することを忘れないでください。

于 2012-12-03T04:46:51.683 に答える