非理性繁荣!

动态广告目标与简戈货币化

8月29日,2008.申请下djangodjango_monetize

这可能是我从事过的最令人兴奋的Django项目,我很高兴它有足够的可用点来分享。我很荣幸向您介绍Django货币化

Django货币化是一个可插拔的Django应用程序,它的目标是使您的Django项目的货币化变得简单。它的设计有两项指导原则:

  1. 货币化有多种形式,一般来说,混合搭配的方法会比单一的货币化方案更有效(例如,经过深思熟虑的捐款组合,亚马逊附属公司和Adsense将比单独的Adsense表现更好)。在不同形式和货币化组合之间进行切换和试验是成功的关键部分。

  2. 你可以通过有效地瞄准你的读者群来大大提高货币化。如果你有能力向来自搜索引擎的用户展示不同的广告(也许AdSense会表现得更好)或Reddit(也许……)傻T恤会卖吗?),使用不同的浏览器(等等,我在向ie用户推销我的OSX应用程序?)查看不同种类的材料(阅读深入教程的人比阅读你对甘草果冻的抱怨的人更有可能捐款)。

支持货币化形式

到目前为止,Django货币化内置支持亚马逊附属公司的自定义链接,亚马逊附属公司的Omakase,亚马逊附属公司的搜索链接,亚马逊荣誉系统捐赠,DreamHost推荐,谷歌Adsense广告单元,贝宝捐款,和SliceHost推荐。

它是微不足道的(和鼓励)添加更多你自己或自定义现有的,以更适合你的网站。创建你自己的定制广告很容易(也许是你写的一本电子书,链接到一个你放在一起的流行博客条目,或者宣传你的新公司)。

安装

安装django_monetize像其他申请一样。从它的存储库,添加django_monetize目录到您的python site packages文件夹,以便:

进口django_monetize

工作时不抛出错误。

然后简单地添加django_monetize已安装的应用程序设置在你的settings.py整理好文件就可以走了。django_monetize不包含任何模型(或以任何方式使用数据库),所以你不需要同步。

使用Django货币化

真正的魔法Django货币化是它允许的自定义和控制级别。首先,让我们在模板级别检查使用情况。我们将从最简单的例子开始,并在探索灵活性时变得更加复杂。

{%负载赚钱%}{%使槽货币化%}

欢迎来到我的网站!

{%使槽货币化%}

会显示两个插槽,两者都使用默认货币化选项(在查看模板配置之后,我们将研究如何设置目标和默认逻辑)。

{%负载赚钱%}{%使槽货币化“标题”%}

欢迎来到我的网站!

{%使槽货币化“页脚”%}

现在我们标记槽。我们可以使用标签在不同的地点显示不同类型的货币化选项。这是最简单的目标定位概念。

{%负载赚钱%}{%使槽货币化“标题”request.meta.http参考%}

欢迎来到我的网站!

{%使槽货币化“页脚”request.meta.http_用户\代理%}

现在我们标记插槽并分别将其传递给引用者和用户代理。Django货币化将检查我们的目标配置,看看当前的referer/user_agent是否是我们指定的目标,并将使用目标广告,如果它存在,否则将恢复为默认广告。

{%负载赚钱%}{%使槽货币化“标题”对象.标题object.series对象.tags%}

欢迎来到我的网站!

{%使槽货币化“页脚”%}

在顶部位置,我们开始看到目标机制的灵活性。它将首先检查对象标题的目标值,然后将检查我们是否已针对其中的任何值object.series列表,并将最终检查我们是否已针对其中的任何值对象.tags列表。

它将以达到的第一个目标值为目标,不会处理剩下的参数。

最后,请注意,一旦找到目标术语,您还可以在不同的槽位中指定该目标术语的货币化类型。因此,你可以显示不同的广告在不同的命名插槽,即使你的目标是这样简单的东西(这可能足以大多数静态内容):

{%负载赚钱%}{%使槽货币化“标题”“Django”%}

欢迎来到我的网站!

{%使槽货币化“页脚”“Django”%}

很灵活,嗯?

的有效参数使槽货币化模板标签

我们正在使用使槽货币化在上面的例子中,我们有责任澄清它能接受的论点。

  1. 它可以用零参数调用,在这种情况下,它使用默认的货币化选项。

  2. 它可以用一个参数来调用,必须是插槽的名称。在这种情况下,它将使用默认货币化选项的目标值(如果存在这样的目标值),否则将使用默认选项。

  3. 它可以用两个或多个参数调用。第一个参数必须是表示槽名的字符串吗。后面的参数可以是:字符串(它们可以是存储在上下文变量中的字符串,或者可以是模板中声明的绝对字符串,如{% monetize_slot“头”“Django”%})字典(使用其值进行处理ITeritems()。)或iterable项(定义为具有__iter__方法)。如果它遇到的对象类型不是上述类型之一(例如,当它处理您的标记的queryset的内容时),它将通过调用将对象转换成字符串Unicode(对象)。这意味着您将使用its返回的字符串来针对特定的对象_ Unicode码__方法。

配置

首先,Django货币化区分没有没有指示“使用默认货币化方法”,鉴于表示“不要使用货币化方法”。承认这是一个任意和混乱的决定,到目前为止,这似乎是一个合理的解决方案。

广告目标的配置是在您的项目中完成的settings.py文件。至少有一个类似的Django项目,Django广告,它将其配置存储在数据库中。虽然这允许更动态地修改系统,Django广告并没有解决广告定位和定制的问题Django货币化做的,我也没有找到一个合理的方法来将配置存储在数据库中(除了存储Python代码的字符串,然后对其进行评估,我觉得这根本不是一个可以接受的解决方案)。

方法中使用了三个值settings.py文件:MONETIZE_TARGET,将违约货币化,和MONETIZE_CONFIG。让我们从一个复杂的例子开始,把它分解。

将违约货币化=“django_monetize / amazon_search.html”,“amazon_search_terms”,Django的书的“amazon_search_title”,“搜索姜戈的书!”MONETIZE_TARGET={django的:'django_货币化/paypal_捐赠.html','作者(威尔·拉森)'金沙手机网:“django_monetize / amazon_honor.html”,'作者(乔某人)':(“django_monetize / amazon_honor.html”,'亚马逊支付页面','Joe Sombodys亚马逊荣誉支付页面URL'“教程”:{'标题':'django_货币化/paypal_捐赠.html',“页脚”:'django_货币化/amazon_omakase.html',没有:(“django_monetize / amazon_search.html”,“amazon_search_terms”,JQuery的“amazon_search_title”,“在jquery上买书!”},}货币化={“amazon_affiliates_id”:'您的关联跟踪ID','亚马逊支付页面':'默认Amazon Paypages URL','贝宝业务':“paypal帐户电子邮件地址”,“paypal_item_name”:'我的网站','PayPal_货币代码':“美元”,'贝宝税':“0”,“paypal_lc”:“我们”,'贝宝':“PP-DonationsBF”,'贝宝图像':'http://www.paypal.com/en_us/i/btn/btn_捐赠_lg.gif',}

可以。所以首先要意识到货币化选择有三种可能的表现形式:

  1. 它们可以是模板名称的字符串。在这种情况下,将使用中的上下文呈现模板货币化

  2. 它们可以是一个元组或列表,其第一个值是模板名,其他值是形式(键、值)的元组/列表,用于重写中的默认值。货币化当呈现货币化选项时。

  3. 它们可以是一本字典,其键是广告槽。(,页脚,或者不管你怎么称呼它们),它们的值要么是形式1,要么是形式2。还有一个神奇的价值,没有如果它没有为所有插槽定义其值,则用于指定其默认值。

下一步,将违约货币化是您建立默认货币化选项的地方,这是上面三种表现之一(弦,带字符串和覆盖的列表,带有槽名的dictionary,每个槽名都有字符串或字符串列表并覆盖)。

最后,MONETIZE_TARGET是一本字典的术语,每个目标都有三种盈利模式。

起来看看他们

现在存储库存储在Github,我知道这不是谷歌代码,因此对一些Django用户来说会有问题。我这个周末要搬到新泽西去,而且直到下周才有时间设置谷歌代码存储库。

以同样的方式,我还没有时间把它整合到这个网站上,因此,它没有接受过沉重的测试。在Github上分叉并进行更改,然后执行推送请求是最简单的贡献方式,但是给我邮寄补丁邮箱:lethain@gmail.com也可以。

自述文件存储库中的文件应该有用,但在我审查之前,你现在应该认为这个博客条目是一个更权威的资源。自述文件对于我改进事物时所做的更改(我尝试实践文档驱动的开发,意思是我在写代码之前就写了文档,对我来说效果很好,但我认为它引入了一些不一致之处)。