Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在网站正常和正常之间分离功能;高级用户_Python_Database_Django_Django Models_Web - Fatal编程技术网

Python 如何在网站正常和正常之间分离功能;高级用户

Python 如何在网站正常和正常之间分离功能;高级用户,python,database,django,django-models,web,Python,Database,Django,Django Models,Web,我正在django制作一个网站。我的网站将同时包含付费内容和未付费内容。我不知道如何只为付费用户打开某些功能,或者如何保护我的高级数据不受付费用户的影响。我能想到的可能解决办法是: 为付费和非付费用户创建单独的数据库 在用户注册网站时标记权限 为付费和非付费用户制作不同的模型 定义不同的视图 请帮帮我。我知道对你们有些人来说,这将是一个不切实际的问题,但我一直坚持这一点,我不知道如何继续 在广泛的层面上,您首先需要使用组,每个组都有单独的权限。可以找到关于Django组的文档。基本上,您可以

我正在django制作一个网站。我的网站将同时包含付费内容和未付费内容。我不知道如何只为付费用户打开某些功能,或者如何保护我的高级数据不受付费用户的影响。我能想到的可能解决办法是:

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

请帮帮我。我知道对你们有些人来说,这将是一个不切实际的问题,但我一直坚持这一点,我不知道如何继续

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

从那以后,你可以从两个方面着手。如果不同的用户组可以访问完全不同的视图,则可以使用某种类型的
@permission\u required
@group\u required
)(或mixin,用于基于类的视图)。使用这些,您可以装饰高级视图,并要求高级用户访问该视图。您可以在中找到关于该问题的进一步讨论

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


底线:不要使用单独的数据库或单独的模型。这可能比它的价值更让人头疼。您可以获得比我所展示的更丰富的内容(即,根据用户组更改传递给模板的上下文),但这应该给您一个良好的开端。

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

从那以后,你可以从两个方面着手。如果不同的用户组可以访问完全不同的视图,则可以使用某种类型的
@permission\u required
@group\u required
)(或mixin,用于基于类的视图)。使用这些,您可以装饰高级视图,并要求高级用户访问该视图。您可以在中找到关于该问题的进一步讨论

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

底线:不要使用单独的数据库或单独的模型。这可能比它的价值更让人头疼。您可以获得比我所展示的更丰富的内容(即,根据用户组更改传递给模板的上下文),但这应该给您一个良好的开端