Django是否有内置的方式来获取当前用户访问的最后一个应用程序URL?

Kar*_*rim 0 python django

我希望Django有一个内置的方式来获取应用程序本身访问的最后一个URL.当我写这篇文章时,我意识到做这样的事情有一些复杂性(例如,不包括重定向的页面),但我想我会试一试.

如果没有内置功能,您会采用什么策略?我的意思不仅仅是在会话中手动存储URL并在重定向时引用它.当然,这会起作用,但我讨厌必须记住为每个视图都这样做.似乎容易出错并且不是很优雅.

哦,我宁愿不依赖于服务器特定的推荐环境变量.

Smi*_*ris 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
Run Code Online (Sandbox Code Playgroud)

该中间件会去 SessionMiddleware在你的设置,以确保该会议将在此之后被更新(的文档有一个漂亮的图片解释这是为什么).