Django, Récupérer la localisation IP
Je voudrais rediriger mes utilisateurs l'emplacement précis des zones dans mon site web, par la détection de leur emplacement à partir de leur adresse IP.
Quelle serait la meilleure façon d'atteindre cet objectif en vertu de Django 1.1.1 ?
Grâce
Edit: je veux en ville locationing sur l'europe.
- Comment voulez-vous distinguer les utilisateurs? Basées sur le Pays? Sur le continent? La langue parlée? etc?
Vous devez vous connecter pour publier un commentaire.
GeoDjango dirait qu'il va répondre à vos besoins. Je ne suis pas sûr exactement comment vous souhaitez que les utilisateurs directs, mais à l'aide de la GeoIP API, vous pouvez faire quelque chose comme:
La Docs expliquer les choses en détail; je voudrais prendre un moment pour les lire attentivement.
GeoIP est déjà mentionné, mais je trouve pygeoip moins compliquées à installer et aucun-brainer si vous souhaitez intégrer dans votre application au lieu de l'installer en Python du site-packages. Encore, il fonctionne très bien avec gratuit MaxMind bases de données, e.g GeoLite City un.
Exemple d'utilisation (presque le même que pour GeoIP):
Morceau de gâteau, et il est gratuit pour la plupart (mais pas tous) les utilisations.
Aller à MaxMind.com et suivez les instructions. Début à la fin, il m'a fallu environ 30 minutes pour que cette course dans un Django app. J'ai fait un certain nombre de tests sur les IPs et ils sont très précis, même dans la version gratuite.
C'est une solution, à partir de DjangoSnippets; btw, je ne sais pas pourquoi le code ci-dessous n'utilise pas urlparse; mais qui pourrait être fixé 🙂
(Regarder les autres réponses, il semble que vous avez beaucoup d'options à choisir. Cette option peut ne pas être votre préféré, car il repose sur un libre service 3ème partie.)
Note de WIPmania: "l'Aide de l'API est libre pour tout usage personnel ou d'affaires, si vous faites moins de 10.000 demandes par jour de calendrier. Un simple mais puissant API vous permettant d'interroger la WorldIP base de données avec un seul lien."
Vous pouvez créer une vue qui récupère l'IP de l'utilisateur et ensuite une redirection HTTP qui sera la cause de leur navigateur pour charger la page que vous voulez:
Vous pourriez trouver la SubnetTree bibliothèque pour Python utile si vous voulez tester pour voir si l'IP est dans un bloc particulier.