提问人:Rod O'Connor 提问时间:11/4/2017 最后编辑:Rod O'Connor 更新时间:11/7/2017 访问量:454
使用 Django-guardian 和 Flatpages 只为一个对象设置权限
setting permission for only one object using Django-guardian and Flatpages
问:
我正在尝试使用 Django-guardian 将权限应用于特定的简单页面。我们的网站上有许多简单页面,在大多数情况下,django-auth 可以满足我们的需求。但是,我们希望为某些简单页面和特定用户添加对象级权限。
例如,我有一个用户,我想授予该用户编辑网站上总简单页面的子集的权限。YOUNGTEMP
我已经安装了 Django-guardian,并使用 shell 为该用户提供了相应站点的权限。该用户根本没有其他权限,因为我不希望他们从管理员那里看到除此站点之外的任何内容。change_flatpage
我可以通过查看数据库来验证权限是否存在,以及当我以 SU 身份登录时它们是否出现在管理员中。为什么当我以这个用户身份登录时,管理网站告诉我我无权编辑任何内容?YOUNGTEMP
我按照此处 readthedocs.io 页面的摘录在 shell 中分配权限,以确保我的覆盖管理员没有问题,如下所示:
imports*...
class FlatPageForm(FlatPageFormOld):
content = forms.CharField(widget=CKEditorUploadingWidget())
class Meta:
model = FlatPage
fields = '__all__'
class FlatPageCustomAdmin(GuardedModelAdmin):
form = FlatPageForm
list_display = ('url', 'title')
search_fields = ('url', 'title')
我卡住了,因为一切似乎都在工作,但仍然无法实现我的目的......
re:@solarissmoke 的要求:
$ python manage.py shell
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.contrib.flatpages.models import FlatPage
>>> from django.contrib.auth.models import User
>>> from guardian.shortcuts import assign_perm, get_users_with_perms
>>> user = User.objects.all().filter(id=758)
>>> print(user[0])
epss_student_worker
>>> page_i_want_to_give_perms_for = FlatPage.objects.all().filter(id=27)
>>> print(page_i_want_to_give_perms_for[0])
/people/alumniawardwinners/ -- Student Alumni Award Winners
>>> assign_perm('change_flatpage', user[0], page_i_want_to_give_perms_for[0])
<UserObjectPermission: /people/alumniawardwinners/ -- Student Alumni Award Winners | epss_student_worker | change_flatpage>
结果get_users_with_perms
>>> get_users_with_perms(page_i_want_to_give_perms_for[0],attach_perms=True)
{<User: epss_student_worker>: [u'change_flatpage']}
答: 暂无答案
评论
get_users_with_perms