我正在尝试编写一个mixin,动态地生成一个随机的Amazon广告。我不确定这是否是处理事情的最佳方式(例如,在模型本身中定义一个返回随机项的方法是否更好。。。但我在这里。你知道吗
我有两个应用程序:events
和advertisements
。我在advertisements.views
中的mixin看起来像:
class AmazonAdvertisingMixin(object):
config = {
# Amazon Config
}
api = amazonproduct.API(cfg=config)
# Get all ads from the database
ads = Advertisement.objects.filter(network__exact='Amazon')
if len(ads) > 0:
ad = random.choice(ads)
# Get the ASIN from a random ad
asin = ad.ASIN
result = api.item_lookup(asin, ResponseGroup='Images, Small')
advertisement = {
'product_url': result.Items.Item['DetailPageURL']
}
def get_context_data(self, **kwargs):
context = super(AmazonAdvertisingMixin, self).get_context_data(**kwargs)
context['advertisement'] = self.advertisement
return context
然后在我的events.views
中,我有一个FormView
,它看起来如下所示:
class ContactFormView(AmazonAdvertisingMixin, FormView):
form_class = ContactForm
template_name = "contact.html"
# etc, etc...
这非常适合在联系人页面上显示广告。唯一的问题是…当我刷新页面时,广告总是一样的。好像混音只有一次。有没有办法让它在每次加载页面时重新运行,这样我就可以获取一个新的asin
?你知道吗
对于实现最终目标,我也愿意接受其他建议:在每个页面加载时,从数据库中随机选择一个advertisement
。思想?你知道吗
我很确定广告代码只在进程启动时运行一次。模型不是为每个页面请求重新加载,而是初始化一次
如果您将广告逻辑放在
get_context_data
中,它应该在每个请求上加载一个随机广告,因为每个请求都会调用get_context_data
我问了一个similar问题:
相关问题 更多 >
编程相关推荐