Django附属系统

django-affiliate的Python项目详细描述


Django的附属系统

Build StatusCoverage StatusPypi version

会员系统奖励合作伙伴与他们的访客付款。 包含具有基本功能的抽象模型,因此 子类化它们并添加自定义逻辑和关系。

注意:版本0.2.0与以前的版本向后不兼容 版本。

示例

访问者使用附属代码访问站点:

http://site.com/?aid=12345

此代码保存在他的cookies中(还支持另一种方式:keep 每个url的aid=12345)。现在每个请求对象都有属性 request.affiliate,因此您可以访问吸引 现在的访客,因此在需要的时候奖励他。

属性request.affiliate是惰性的。检查,该子公司存在, 执行以下操作:

if request.affiliate.exists():
    # optionally check, that he is active:
    if request.affiliate.is_active:
        # request comes from affiliate with code
        # affiliate.aid

您可以在此存储库中找到示例项目。

要求

  • Python(2.7、3.4、3.5)
  • Django(1.6、1.7、1.8、1.9)

快速启动

  1. 将此软件包安装到python发行版中

    pip install django-affiliate
    
  2. 将“附属”添加到已安装的应用程序:

    INSTALLED_APPS = [
        # ...
        'affiliate',
    ]
    
  3. 将“affiliate.middleware.affiliatemiddleware”添加到 中间件类:

    MIDDLEWARE_CLASSES = (
        # ...
        'affiliate.middleware.AffiliateMiddleware',
    )
    
  4. 定义自定义关联模型(类似于自定义用户模型):

    # our_app/models.py
    from django.db import models
    from affiliate.models import AbstractAffiliate
    
    
    class Affiliate(AbstractAffiliate):
        pass  # or add some your custom fields here
    
    # settngs.py
    AFFILIATE_AFFILIATE_MODEL = 'our_app.Affiliate'
    
  5. 创建表格

    # django <= 1.6
    python manage.py syncdb
    
    # django <= 1.6 & south
    python manage.py schemamigration our_app --auto
    python manage.py migrate our_app
    
    # django >= 1.7
    python manage.py makemigrations our_app
    python manage.py migrate our_app
    
  6. 最后,奖励附属公司

    from django.views.generic import FormView
    from affiliate.tools import get_affiliate_model
    
    Affiliate = get_affiliate_model()
    
    class SomeView(FormView):
        # ...
    
        def form_valid(self.form):
            product = self.get_product()
            if self.request.affiliate.exists() and self.request.affiliate.is_active:
                # reward affiliate here, your custom logic is here
                Transaction.objects.create(
                    user=self.affiliate.user,
                    amount=Affiliate.calc_affiliate_reward(product.price))
                return super(SomeView, self).form_valid(form)
    

可选

总是保留aid get参数(也许你不信任cookies 或者你只想在他的访客支付 当前链接访问,而不是明天)

  1. 加载“联盟URL”标记:

    {% load affiliate_urls %}
    
  2. 使用“url aff”而不是“url”模板标记:

    <a href="{% url_aff 'home' %}">Home</a>
    

配置

在settings.py中定义

  • Affiliate_Affiliate_模型-用于表示 附属公司,类似于 AUTH_USER_MODEL。 必须明确定义。
  • 附属公司名称-联系人姓名获取URL中的参数。 默认值'aid'
  • 关联方奖励金额-默认的关联方奖励金额。可以是 设置为字符串('5.55')或int(10)。默认值10
  • 关联方奖励百分比-如果为真,AFFILIATE_REWARD_AMOUNT 作为百分比处理。否则就是确切的金额。违约 True
  • 关联方保存会话中的关联方-是否保存会话中的关联方ID。 默认值True
  • 联盟会话年龄-联盟ID在会话中保留多长时间,在 几秒钟。默认值5 * 24 * 60 * 60秒(5天)。
  • 关联方默认链接-默认链接,将由 Affiliate.build_absolute_affiliate_uri.build_affiliate_url。默认值'/'
  • SuffeleTyAdvelPARAMMIL和AGRIDENATION——如果属实,删除附属公司 从url参数并重定向到同一url(将保存关联数据 在会话中)。默认值False

Django关联发布说明

v0.4.0(2016-05-24)

  • Django 1.9支持
  • python 3.5支持

问题:12

V0.3.3(2016-04-10)

  • 如果援助代码类型不正确,不要引发异常

问题:10

V0.3.2(2016-11-29)

    如果确实正确,则执行重定向。 仅适用于GET REQUEST方法

V0.3.1(2015-11-29)

    添加设置从属关系删除,PARAMAMIL和重定向,允许 从URL中删除关联参数并重定向

V0.2.1(2015-10-29)

  • 将翻译添加到pypi

V0.2.0(2015-10-29)

  • 仅由包定义的关联模型
  • 请求现在有lazyaffiliateproperty,返回affiliate 实例(如果EXIST)
  • Django 1.7、1.8支持
  • python 3.4支持
  • 添加测试
  • 向后不兼容

问题:1、3、4、6、8

V0.1.1(2015-01-15)

  • 已上载到PYPI
  • 小错误修复

v0.1.0(2014-04-29)

  • 加盟模式
  • 统计模型
  • 撤回请求的方式

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Java中运行时在两个枚举类之间切换   java如何让PicoContainer启动/停止/处置工厂注入的组件?   带有Recyclerview onClick的java多活动   java如何从TestNG tests和Selenium接口调用默认方法?   java无法在Eclipse3.5.2中折叠注释   RR和SJF CPU调度算法的Java代码   java从属性文件配置记录器   java Notify传输在字符更改后超过20个字节完成   java阵列究竟是如何工作的   java跨类/包维护全局但可变的变量   java向setMessageListener注册侦听器服务   java按钮单击不在片段中工作   java GSSExException:使用spnego在GSSAPI上未指定故障(机制级别:不支持/启用带有HMAC SHA196的加密类型AES256CTS模式)   用java绘制虚线的图形   java从networkdrive启动windows捆绑包使用不包括JRE?   多线程java线程体系结构与应用程序设计