内容访问级别不同的代码

armstrong.core.arm_access的Python项目详细描述


用法

确保您的 环境,并已添加到您安装的应用程序中。你还需要 为了确保这些模型已经通过 armstrong安装在您的数据库中 同步数据库 。有关详细信息,请参阅"限制内容"和"用户成员资格"部分 信息。

限制内容

内容对象可以通过使其具有特定级别的访问权限 继承自 armstrong.core.arm_access.mixins.accessmixin 类。这个 将允许 armstrong.core.arm_access.models.assignment指定 在特定的时间范围内授予对该对象的访问权限。

对于基本的付费墙场景,其中一些故事总是溢价的,而其他故事 始终是公共的,创建两个armstrong.core.arm_access.models.level 将是您的"特优"级别,它将被设置为"真"。 另一个是您的公共级别,它将设置为 至 。发布文章时,将两个级别中的一个指定给 内容:

对于在一段时间内是付费的然后成为公开的内容,创建两个 和以前一样。使用 立即 开始日期,并将其分配给公众 当您希望内容变得自由时,请使用 开始日期 可用。

若要将对存档的访问限制为只允许添加高级订阅服务器 以立即 开始日期和 您不想再提供免费访问的结束日期。你会的 需要使用立即 开始日期将内容添加到高级级别 并且不 结束日期 (默认为 datetime.datetime.max )。

用户成员身份

用户可以通过 armstrong.core.arm_access.models.access membership 开始日期 结束日期 定义 会员资格有效。每个memrbership还有一个 活动的 布尔字段 可以将其设置为false以使成员资格无效。用户的活动 可以使用 user.access_memberships.current()

查询成员资格

付款墙

阻止用户访问内容的实际过程是 通过 armstrong.core.arm_access.paywalls 包中的Paywalls进行处理。 目前唯一提供的付费墙是 armstrong.core.arm_access.paywalls.subscription.subscriptionpaywall 哪个 检查当前成员身份。SubscriptionPayWall只在视图上工作 返回一个模板响应。

要在演示应用程序中使用SubscriptionPayWall,您可以使用如下代码 以下内容:

...

paywall = SubscriptionPaywall()
protected_detail = paywall.protect(object_detail)

...

url(r'^article/(?P<slug>[-\w]+)/', protected_detail, {
                    'queryset':Article.published.all().select_subclasses(),
                    'template_name':'article.html',
                    'slug_field':'slug',
                },
        name='article_detail'),

当用户访问 使用他们没有成员资格的访问级别进行保护。 subscriptionpaywall接受一个附加参数 permission\u denied 确定对失败采取的操作。参数必须是可调用的 接受一个参数,一个templateresponse,并返回一个response对象 表示拒绝访问时要执行的操作。例如:

# to redirect to a new url entirely
from armstrong.core.arm_access.paywalls import redirect_on_deny
redirecting_paywall = SubscriptionPaywall(
        permission_denied=redirect_on_deny='/membership/signup')

# to render the request's context with a new template (to provide teaser
# content)
from armstrong.core.arm_access.paywalls import render_on_deny
rendering_paywall = SubscriptionPaywall(
        permission_denied=render_on_deny='/membership/upsell.html')

如果您只想为没有高级访问级别的用户呈现广告,则 无法将SubscriptionPayWall与未呈现的默认模板一起使用 广告和渲染否认这一点。

只允许匿名用户查看一定数量的完整文章,然后 显示paywall,您需要构建一个自定义paywall实现, 但是subscriptionpaywall应该提供一个不错的模板。如果你这样做了 实施它,它将是一个很好的候选n这个包裹。

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

推荐PyPI第三方库


热门话题
java运行时异常:com。安卓建设者德兴。DexArchiveMergerException:无法合并dex   java UDP如何获取传入数据报的目标地址   java如何将一些内容保存到列中并将其读回对象   属性类Java   java如何将二进制数据附加到HSQL(2.3.2)blob中?   试图在Maven项目中使用OpenJPA连接到Derby数据库,但出现“java.sql.SQLException”错误。   java(JavaFX)如何将类的实例传递给FXML控制器而不知道该控制器的名称?   sql为什么单线程使我的Java程序更快?   在单独的窗口上显示控制台输出[java]   java在Hadoop集群之外从Eclipse访问HDFS   java在我的类中初始化以下实例的最佳方法是什么?   java类单例或组件。它必须从不同的地方调用   java如何将配置文件自动下载到项目的根目录?