如何在(Django GeoIP)中为每个国家/地区显示广告
Posted
技术标签:
【中文标题】如何在(Django GeoIP)中为每个国家/地区显示广告【英文标题】:How to display ads for each country in (Django GeoIP) 【发布时间】:2013-04-30 09:32:29 【问题描述】:我正在尝试在每个国家/地区展示不同的广告,例如,西班牙展示广告 Adsense 和 CO 展示收益管理器。
我的视图和模板:
from django.contrib.gis.geoip import GeoIP
class VideoViewDetail(DetailView):
model = Video
def get_object(self):
return get_object_or_404(Video, slug__exact=self.kwargs['slug'])
def get_context_data(self, **kwargs):
context = super(VideoViewDetail, self).get_context_data(**kwargs)
g = GeoIP()
ip = self.request.META.get('REMOTE_ADDR')
country = g.country('ip')
context['country_name'] = country
return context
template
% for video in objectc_list %
video.name | video.genre.name
% if country_name == 'ES' %
**code here ads**
% else %
% if country_name == 'CO' %
**code here ads**
% else %
% if country_name == 'MX' %
**code here ads**
% else %
** nothing **
% endif %
我做错了什么但不起作用,感谢任何帮助。
谢谢。
【问题讨论】:
【参考方案1】:使用他们的原生 php 库和 GeoIP.dat 数据集,它是这样完成的:
// Open GeoIP database and get the visitor's location.
$geoIP = geoip_open("GeoIP.dat", GEOIP_STANDARD);
$visitorLocation = geoip_record_by_addr($geoIP, $_SERVER["REMOTE_ADDR"]);
$visitorCountry = $visitorLocation->country_code;
// Decide whether to show AdSense or not.
// In this example, we show it only to visitors from the U.S.A., Canada and the United Kingdom.
if (in_array($visitorCountry, array("us", "ca", "gb")))
// Show AdSense!
// ...
else
// Show some other ad we don't care about so much.
// ...
【讨论】:
以上是关于如何在(Django GeoIP)中为每个国家/地区显示广告的主要内容,如果未能解决你的问题,请参考以下文章
如何在 OS X 中为 Django 正确设置 GEOIP_PATH?
Magento - 我如何通过 GeoIP 按国家/地区运行商店?