使用Django根据位置显示内容
如何根据用户所在的位置为其显示内容 例如,如果我只想为加拿大的用户而不是美国的用户显示一个博客部分,那么我如何将Django作为最佳实践 我还没有找到解释它如何工作的东西。您可以使用api获取位置并在django视图中使用它。例如:使用Django根据位置显示内容,django,Django,如何根据用户所在的位置为其显示内容 例如,如果我只想为加拿大的用户而不是美国的用户显示一个博客部分,那么我如何将Django作为最佳实践 我还没有找到解释它如何工作的东西。您可以使用api获取位置并在django视图中使用它。例如: import requests # pip install requests def myview(request): x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') if
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)
导入请求#pip安装请求
def myview(请求):
x_forwarded_for=request.META.get('HTTP_x_forwarded_for'))
如果x_转发了以下内容:
ipaddress=x_已转发_for.split(',')[-1].strip()
其他:
ipaddress=request.META.get('REMOTE\u ADDR')
ipinfodb_data=requests.get('http://api.ipinfodb.com/v3/ip-country/?key=&ip={0}.格式(ipaddress))
country=ipinfo-db.text.split(“:”)[4]
上下文=dict()
如果国家美国:
context['blog']=blog.objects.all()
#根据上下文做其他事情
返回render_to_response('my_template.html',
上下文=上下文)
模板应如下所示:
{% if blog %}
{% for b in blog %}
{{ b.title }}: {{ b.author }}
{% endfor %}
{% else %}
<!-- do stuff -->
{% endif %}
{%if blog%}
{%b在blog%}
{{b.title}}:{b.author}
{%endfor%}
{%else%}
{%endif%}
这很可能取决于您如何定义特定区域可以使用的内容,周围有地理库,允许您根据位置进行过滤,但它们都需要您在某处定义位置