我是django的新手,我非常喜欢它的模块化结构,所以我决定利用它并将所有独立的功能分别放在不同的app中。
现在我需要一种方法来管理用户和管理员打开和关闭这些应用程序。 用户选项面板如下所示:
[ ] blog --------------------- [ ] tagging [BUY]
检查“博客”选项后,用户可以在他的个人资料中获取博客,购买并检查“标记”后,他会为博客添加标记。
管理员面板可以显示或隐藏用户面板中的应用。
我想知道是否:
谢谢, 罗伯特
答案 0 :(得分:0)
我没有听说过任何这样的应用程序...但我不认为它会太难建立。
如果我这样做,我会在每个应用的入口点进行权限检查。例如:
check_app_permission = lambda request: permissions.check_app_permission("blog", request)
def view_blog(request, …):
check_app_permission(request)
…
(甚至有可能做一些魔术并在urls.py
级别注入此检查......)
此外,我还会创建一个has_app_permission
模板标记:
<div id="sidebar">
{% if has_app_permission "blog" %}
{% include "blog/sidebar_recent_posts.html" %}
{% endif %}
</div>
或类似。
最后,您可以实施权限系统的方式大约有一百万......而且如果没有更多信息,我将无法发表评论。但最简单的是:
class App(Model):
name = CharField(…)
class AppPermission(object):
app = ForeignKey(App)
user = ForiegnKey(User)
def user_has_permission(user, app_name):
return AppPermission.objects.filter(app__name=app_name, user=user).exists()
我会避免尝试用中间件来做这件事,因为如果我正确地理解了这个问题,我希望你会(或者,至少,我希望我会)花费大量时间来构建一个通用框架,最后,只会有与上述类似的检查。
这有帮助吗?有什么我可以澄清的吗?