如何检查用户是否使用Django中间件从美国境外登录

如何检查用户是否使用Django中间件从美国境外登录,django,Django,我是Django的新手,想知道如何检查登录Django网站的用户是否来自美国以外的国家 如何在中间件中编写一个类来检查相同的问题?我想对从美国注销的用户隐藏网站的特定部分 我知道我没有提供任何细节,这个问题可能看起来很模糊。。。但我需要一个大致的想法来开始。我还没有开始在网站上工作 我浏览了Django中间件文档,但仍然不了解如何做到这一点。 用户身份验证是否提供任何此类功能?您可以使用 简单的中间件可以如下所示: class GeoLocationMiddleware: def pro

我是Django的新手,想知道如何检查登录Django网站的用户是否来自美国以外的国家

如何在中间件中编写一个类来检查相同的问题?我想对从美国注销的用户隐藏网站的特定部分

我知道我没有提供任何细节,这个问题可能看起来很模糊。。。但我需要一个大致的想法来开始。我还没有开始在网站上工作

我浏览了Django中间件文档,但仍然不了解如何做到这一点。 用户身份验证是否提供任何此类功能?

您可以使用

简单的中间件可以如下所示:

class GeoLocationMiddleware:
    def process_request(self, request):
        if 'geoip_check' not in request.session:
            g = GeoIP()
            country = g.country(request.META.get('REMOTE_ADDR'))
            do_something(country) #Do something with country result.
            request.session['geoip_check'] = True #Could store country result

        return None
您会注意到我在会话中添加了一个标志。在每个请求上检查GeoIP是不必要的,而且对性能有害,因此我们每个会话只检查一次。 希望这就是你想要的

编辑: 如果您只想为已登录的用户执行此操作,请在此处输入:

if request.user.is_authenticated():

开始时。

检查这个问题:……它可能会帮助您开始。这似乎是一个很好的解决方案。。但假设用户来自美国,正在美国境外进行商务旅行,并希望访问该网站的数据,他也可能会被阻止,因为IP不是来自美国。解决这个问题的好办法是什么?有很多方法可以处理这样的事情。您可以在用户模型/配置文件“is_us”上存储一个标志。创建帐户时,如果此人当时在美国,您会将其设置为true。然后在中间件中,在阻塞之前检查request.user的is\u us。这一切都取决于您希望业务逻辑如何工作/执行。
if request.user.is\u经过身份验证:
没有Django文档中的括号-