Django附属系统
django-affiliate的Python项目详细描述
Django的附属系统
会员系统奖励合作伙伴与他们的访客付款。 包含具有基本功能的抽象模型,因此 子类化它们并添加自定义逻辑和关系。
注意:版本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)
快速启动
将此软件包安装到python发行版中
pip install django-affiliate
将“附属”添加到已安装的应用程序:
INSTALLED_APPS = [ # ... 'affiliate', ]
将“affiliate.middleware.affiliatemiddleware”添加到 中间件类:
MIDDLEWARE_CLASSES = ( # ... 'affiliate.middleware.AffiliateMiddleware', )
定义自定义关联模型(类似于自定义用户模型):
# 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'
创建表格
# 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
最后,奖励附属公司
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 或者你只想在他的访客支付 当前链接访问,而不是明天)
加载“联盟URL”标记:
{% load affiliate_urls %}
使用“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)
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)
- 加盟模式
- 统计模型
- 撤回请求的方式