我是Django的新手,想知道如何检查登录django网站的用户是否来自美国境外?
我如何在Middleware中编写一个类来检查它?我希望隐藏退出美国的用户隐藏网站的特定部分。
我知道我没有提供任何细节,这个问题可能看起来很模糊......但我需要一个大致的想法才能开始。我还没有开始在网站上工作。
我浏览了Django Middleware文档,但仍然不明白该怎么做。 用户身份验证https://docs.djangoproject.com/en/1.4/topics/auth/#limiting-access-to-logged-in-users是否提供此类功能?
答案 0 :(得分:3)
您可以使用GeoIP module included with 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():
一开始。