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

Python Django是否有一种内置的方式来获取当前用户访问的最后一个应用程序url?,python,django,Python,Django,我希望Django有一个内置的方法来获取应用程序中访问的最后一个url。当我写这篇文章的时候,我意识到在做类似的事情时会有一些复杂的情况(例如,不包括重定向的页面),但我想我应该试一试 如果没有内置的解决方案,您会使用什么策略?我的意思是,除了在会话中手动存储url并在重定向时引用它之外。当然,这是可行的,但我讨厌这样的想法,即必须记住对每个视图都这样做。看起来容易出错,而且不太优雅 哦,我不希望依赖于特定于服务器的引用环境变量 您只需编写一个中间件就可以做到这一点,无需在每个视图函数上重复日志

我希望Django有一个内置的方法来获取应用程序中访问的最后一个url。当我写这篇文章的时候,我意识到在做类似的事情时会有一些复杂的情况(例如,不包括重定向的页面),但我想我应该试一试

如果没有内置的解决方案,您会使用什么策略?我的意思是,除了在会话中手动存储url并在重定向时引用它之外。当然,这是可行的,但我讨厌这样的想法,即必须记住对每个视图都这样做。看起来容易出错,而且不太优雅


哦,我不希望依赖于特定于服务器的引用环境变量

您只需编写一个中间件就可以做到这一点,无需在每个视图函数上重复日志代码。

您只需编写一个中间件就可以做到这一点,无需在每个视图函数上重复日志代码。

不,Django core中没有类似的内置功能(它不是内置的,因为它不是一种常见的使用模式)

正如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,以确保会话在此之后得到更新(文档中有解释原因的说明)。

不,Django core中没有内置类似的功能(它不是内置的,因为它不是常见的使用模式)

正如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,以确保在此之后会话将被更新(文档中有一个解释说明为什么会这样).

你是说有中间件可以做这件事,还是说我应该创建自己的中间件来做这件事?我相信,他是说你应该创建自己的中间件。你是说有中间件可以做这件事,还是说我应该创建自己的中间件来做这件事?我相信,他是说你应该创建自己的中间件。