如何根据用户的位置显示用户的内容?
例如,如果我只为加拿大的用户显示博客部分而不为美国的用户显示。如何将Django作为最佳实践来做到这一点?
我没有找到解释它是如何工作的东西。
答案 0 :(得分:0)
您可以使用IPInfoDB's api获取位置并在django视图中使用它。例如:
import requests # pip install requests
def myview(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ipaddress = x_forwarded_for.split(',')[-1].strip()
else:
ipaddress = request.META.get('REMOTE_ADDR')
ipinfodb_data = requests.get('http://api.ipinfodb.com/v3/ip-country/?key=<your_key_from_ipinfodb>&ip={0}'.format(ipaddress))
country = ipinfodb.text.split(':')[4]
context = dict()
if country != 'United States':
context['blog'] = Blog.objects.all()
# do other stuff in context
return render_to_response('my_template.html',
context=context)
模板应如下所示:
{% if blog %}
{% for b in blog %}
{{ b.title }}: {{ b.author }}
{% endfor %}
{% else %}
<!-- do stuff -->
{% endif %}