Đây là một giải pháp, từ DjangoSnippets; btw, không chắc chắn lý do mã bên dưới không sử dụng urlparse; nhưng điều đó có thể được cố định :-)
(Nhìn vào câu trả lời khác, có vẻ như bạn có nhiều tùy chọn để lựa chọn. Tùy chọn này có thể không được ưa thích vì nó dựa trên một dịch vụ bên thứ 3 miễn phí.)
from urllib2 import urlopen, Request
import re, socket
from django.conf import settings
domain_re = re.compile('^(http|https):\/\/?([^\/]+)')
domain = domain_re.match(settings.SITE_URL).group(2)
def getUserCountry(ip):
url = "http://api.wipmania.com/" + ip + "?" + domain
socket.setdefaulttimeout(5)
headers = {'Typ':'django','Ver':'1.1.1','Connection':'Close'}
try:
req = Request(url, None, headers)
urlfile = urlopen(req)
land = urlfile.read()
urlfile.close()
return land[:2]
except Exception:
return "XX"
Lưu ý từ WIPmania: "Sử dụng API miễn phí cho mọi mục đích, cá nhân hoặc doanh nghiệp, nếu bạn đang thực hiện ít hơn 10.000 yêu cầu mỗi ngày theo lịch. API đơn giản nhưng mạnh mẽ cho phép bạn truy vấn cơ sở dữ liệu WorldIP bằng một liên kết. "
Làm thế nào để bạn muốn phân biệt người sử dụng? Dựa trên quốc gia? Trên lục địa? Ngôn ngữ được nói? v.v. –