如何区分网站普通用户和高级用户的功能

0 python database django django-models web

我正在django制作一个网站。我的网站将包含付费非付费内容。我不知道如何仅为付费用户开放某些功能,也不知道如何保护我的高级数据免受非付费用户的侵害。我能想到的可能的解决方案是:

  • 为付费和非付费用户创建单独的数据库。
  • 当用户在网站上注册时标记权限。
  • 为付费和非付费用户制作不同的模型。
  • 定义不同的视图。

请帮我。我知道对某些人来说这将是一个新手问题,但我一直坚持这个问题,我不知道如何继续。

Ale*_*lex 5

从广义上讲,您首先需要使用组,每个组都有单独的权限。有关 Django 组的文档可以在此处找到。本质上,您创建两个不同的组(付费和非付费),每个组具有不同的权限。该页面还包含有关权限的文档。

从那里,您可以通过两种方式进行处理。如果您要拥有可供不同用户组访问的完全不同的视图,则可以使用某种@permission_required@group_required)(或 Mixins,用于基于类的视图)。使用这些,您可以装饰高级视图并要求高级用户访问该视图。您可以在这篇博文中找到对此的进一步讨论。

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

底线:不要使用单独的数据库或单独的模型。这可能比其价值更令人头痛。您可以得到比我所展示的更奇特的内容(即通过根据用户组更改传递给模板的上下文),但这应该给您一个不错的开始。