栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Django基于角色的视图?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django基于角色的视图?

Django已经有一个组和权限系统,这可能足以满足你的目的。

http://docs.djangoproject.com/en/dev/topics/auth/

通常,在你的代码中,你检查用户是否具有权限。用户具有自己的权限以及他所属的组的权限。你可以从管理控制台轻松进行管理。

你需要看两部分。

  1. 检查请求页面的用户是否有权这样做。
  2. 仅在用户获得许可的情况下显示指向用户的链接。
    对于1.,你可以像这样检查装饰器中的权限:
from django.contrib.auth.decorators import permission_required@permission_required('polls.can_vote')def some_view(request):

对于2.,当前登录用户的权限存储在模板变量{{perms}}中。此代码检查与上述相同的权限。

{% if perms.polls.can_vote %}    <a href="/vote">vote</a>{% endif %}

要生成链接列表,你可以遍历user.get_all_permissions()并从字典中获取链接(或生成链接的函数):

def more_elaborate_list_of_links_for_a_perm(user):    return ["/link1", ...]_linkS = {    'polls.can_vote' : lambda u: ["/user/specific/link/" + u.id],    'polls.can_close': lambda u: ['/static/link/1', 'static/link/2'],    'polls.can_open' : more_elaborate_list_of_links_for_a_perm}def gen_links(user):    # get_all_permissions also gets permissions for users groups    perms = user.get_all_permissions()    return sum((_linkS[p](user) for p in perms if p in _linkS), [])

可能还有许多其他方法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/411209.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号