Django 有没有内置方法获取当前用户访问的最后一个应用 URL?

0 投票
2 回答
763 浏览
提问于 2025-04-15 13:23

我原本希望Django能有一个内置的方法,来获取在应用中最后访问的那个网址。不过在写这段话的时候,我意识到这样做会有一些复杂的地方(比如要排除那些会重定向的页面),但我还是想试试。

如果没有现成的办法,你会用什么策略呢?我的意思是,除了手动把网址存到会话里,然后在重定向的时候再用这个网址。这样当然可以,但我不喜欢每次都要记得这么做,感觉容易出错,也不太优雅。

哦,对了,我也不想依赖于服务器特定的引用环境变量。

2 个回答

0

你可以写一个中间件,专门用来处理这个问题,这样就不用在每个视图函数里重复写日志代码了。

5

不,Django核心里没有这样的功能(之所以没有,是因为这不是一个常见的使用方式)。

就像Javier提到的,你可以自己做一个中间件来实现你想要的功能。大概可以这样做:

class PreviousURLMiddleware(object):
    def process_response(request, response):
        if response.status_code == 200:
            request.session['previous_url'] = request.get_full_url()
        return response

这个中间件需要放在你的设置中SessionMiddleware之后,这样才能确保会话在这个中间件之后更新(文档里有一张很好的图示,解释了为什么要这样做)。

撰写回答