2

ユーザーが最後にアクセスした URL を記録するミドルウェアがあります。

class LastSiteUrl(object):

    def is_admin_url(self, url):
        if re.search('^(http:\/\/.*){0,1}\/admin\/', url) is None: return(False)
        else: return(True)

    def process_request(self, request):
        if self.is_admin_url(request.path) and \
            not self.is_admin_url(request.META['HTTP_REFERER']):
            request.session['last_site_url'] = request.META['HTTP_REFERER']

これを使用して、管理者がどれほど深く管理していたとしても、管理者ページから最後にいたアプリ ページに戻します。これはうまくいっています。

カスタムの 404 ページがあり、そこからアプリ内の元の場所に戻るためのリンクを提供したいと考えています。しかし、無効なページに移動すると、ミドルウェアが実行されないようです。その場合も実行する方法はありますか?

4

1 に答える 1

1

ベースの urls.py で handler404 を使用すると、サーバーから直接ではなく、django ビューから 404 ページを提供し、そのミドルウェアを他の Django ビューに追加することができます。

https://docs.djangoproject.com/en/dev/ref/urls/#django.conf.urls.handler404

urls.pyで

handler404 = 'app.views.view'

また

handler404 = ClassView.as_view()
于 2014-01-21T18:59:13.160 に答える