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 回答