Python Django:中间件创建更多条目

Python Django:中间件创建更多条目,python,django,middleware,Python,Django,Middleware,这是我的中间件类中的代码。问题在于它在登录和注销时在表中创建两个条目。我想在用户登录inn时记录一次IP。当从特定的IP加载页面时,它也会进行输入。请注意,中间件会对每个请求进行操作。因此,您应该记录每个请求的代码,而不仅仅是登录/注销 您可能希望查看事件框架,以便只响应登录和注销 此外,您可能应该使用新样式的类。是否有正在运行的浏览器调试器/检查器发出两个请求?我的代码托管在服务器上。当我使用我的浏览器登录并检查我的数据库表时,我发现它正在生成两个entries。首先,我建议确保查看功能不会在

这是我的中间件类中的代码。问题在于它在登录和注销时在表中创建两个条目。我想在用户登录inn时记录一次IP。当从特定的IP加载页面时,它也会进行输入。请注意,中间件会对每个请求进行操作。因此,您应该记录每个请求的代码,而不仅仅是登录/注销

您可能希望查看事件框架,以便只响应登录和注销


此外,您可能应该使用新样式的类。

是否有正在运行的浏览器调试器/检查器发出两个请求?我的代码托管在服务器上。当我使用我的浏览器登录并检查我的数据库表时,我发现它正在生成两个entries。首先,我建议确保查看功能不会在一个请求下再次运行。如果您使用Django应用程序的调试版本。服务器您可以输出一些信息(打印“测试”)并查看命令行。即使您的代码位于服务器上,来自浏览器工具的双重请求也可能导致两个请求。另外,请显示您的日志设置-您是否启用了两个日志处理程序?还有一件事我希望它在第一个请求上工作,即当用户登录inn时,但它将IP放在用户访问的每个页面上。当用户登录inn并单击或转到6页时,它会进入6个IP,但我希望它仅在用户登录inn时工作,因此有一些可用的中间件可用于检查请求是否来自移动或PC浏览器。因此,如果有人在使用移动设备,那么为什么它必须检查每个请求,该请求来自移动设备,它应该存储在某个会话变量中,该会话变量表示如果请求来自该会话,它的形式是移动的。因为用户将通过手机浏览。你喜欢什么say@syedsabir当然,但是你必须使用会话。不是每个人都这样。它也更容易出错。
class Middleware:

    def process_request(self, request):
        #ipreq(self)
        ip = request.META['HTTP_X_FORWARDED_FOR']
        make_entry(ip)

    def make_entry(self, ip):
        p = Logging_protocol.objects.create(proto = ip)

        p.save()