如何在网站普通和网络之间分离功能高级用户

时间:2014-05-03 05:02:33

标签: python database django django-models web

我在 django 中制作网站。我的网站将同时包含付费非付费内容。我不知道如何仅为付费用户打开某些功能或如何保护我的高级数据免受未付费用户的影响。我能想到的可能的解决方案是:

  • 为付费和非付费用户创建单独的数据库。
  • 当用户在网站上注册时标记权限。
  • 为付费电子邮件制作不同的型号无偿用户。
  • 定义不同的观点。

请帮帮我。我知道一些人对你来说这将是一个愚蠢的问题,但我坚持这一点,我不知道如何继续。

1 个答案:

答案 0 :(得分:4)

从广义上讲,您首先要使用具有不同权限的组。可以找到有关Django组的文档here。实际上,您创建了两个不同的组(付费和非付费),每个组具有不同的权限。同一页面也包含有关权限的文档。

从那里,你可以采取两种方式。如果您将拥有可供不同用户组访问的完全不同的视图,则可以使用某种@permission_required@group_required)(或Mixins,用于基于类的视图)。使用这些,您可以装饰高级视图,并要求高级用户访问视图。您可以在this blog post中找到有关该问题的进一步讨论。

第二种方法是使用模板标签来显示/隐藏某些高级信息。这将是两个用户组都可以查看所有页面,但高级用户将能够看到一些额外的内容。这里,这个想法与上面类似,但是在模板级别执行。您在仅希望高级用户查看的内容部分周围添加了{% if perms.premium %}标记。

底线:不要使用单独的数据库或单独的模型。这可能比它的价值更令人头痛。你可以获得比我所展示的更加迷人(即通过改变传递给模板的上下文,具体取决于用户组),但这应该会给你一个不错的开始。