标签: django-guardian

django.db.utils.OperationalError:没有这样的表:auth_user

在我安装 Django-userena 后,我的 django 版本有一个错误:1.9.5 我只是一步一步地安装 django-userena,但是当我迁移它时,发生了一个错误,我不知道如何解决它。

    Traceback (most recent call last):
  File "manage.py", line 12, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 345, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Python27\lib\site-packages\django\core\management\base.py", line 348, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Python27\lib\site-packages\django\core\management\base.py", line 399, in execute
    output = self.handle(*args, **options)
  File "C:\Python27\lib\site-packages\django\core\management\commands\migrate.py", line 204, in handle
    emit_post_migrate_signal(self.verbosity, self.interactive, connection.alias)
  File "C:\Python27\lib\site-packages\django\core\management\sql.py", line 50, in emit_post_migrate_signal
    using=db)
  File "C:\Python27\lib\site-packages\django\dispatch\dispatcher.py", line 192, in send
    response = receiver(signal=self, sender=sender, **named)
  File "C:\Python27\lib\site-packages\guardian\management\__init__.py", …
Run Code Online (Sandbox Code Playgroud)

python django django-guardian django-userena

4
推荐指数
3
解决办法
2万
查看次数

使用Django模型权限会引发DoesNotExist错误

我对django守护者有些问题.我有一个新闻模型定义

class News(models.Model):
    title = models.CharField(_('Title'), max_length=255)
    slug = models.SlugField(_('Slug'), unique_for_date='pub_date',)

    objects = models.Manager()
    featured = FeaturedNewsManager()

    link = models.URLField(_('Link'), blank=True, null=True,)

    class Meta:
        permissions = (('view_news', _('view news')))
Run Code Online (Sandbox Code Playgroud)

然后我尝试将view_news权限分配给我的一个用户,我收到以下错误:

>>> from guardian.shortcuts import assign_perm
>>> g = Group.objects.latest('pk')
>>> n = News.objects.get(pk=4)
>>> assign_perm( 'news.view_news', g, n)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/home/roberto/.virtualenvs/ve_news/local/lib/python2.7/site-packages/guardian/shortcuts.py", line 93, in assign_perm
    return model.objects.assign_perm(perm, group, obj)
  File "/home/roberto/.virtualenvs/ve_news/local/lib/python2.7/site-packages/guardian/managers.py", line 90, in assign_perm
    permission = Permission.objects.get(content_type=ctype, codename=perm)
  File …
Run Code Online (Sandbox Code Playgroud)

python django permissions django-models django-guardian

3
推荐指数
1
解决办法
2978
查看次数

Django 管理模型 add_view:如何删除“保存并添加另一个”按钮?

通过实现以下代码,我能够删除“保存并添加另一个”和“保存并继续编辑”按钮:

# At the start of my admin.py file I have:
from django.contrib.admin.templatetags.admin_modify import *
from django.contrib.admin.templatetags.admin_modify import submit_row as original_submit_row

@register.inclusion_tag('admin/submit_line.html', takes_context=True)
def submit_row(context):
    ctx = original_submit_row(context)
    ctx.update({
        'show_save_and_add_another': context.get('show_save_and_add_another', ctx['show_save_and_add_another']),
        'show_save_and_continue': context.get('show_save_and_continue', ctx['show_save_and_continue'])
        })
    return ctx

class MyModelAdmin(GuardedModelAdmin):
# Then inside MyModelAdmin I have this:
    def change_view(self, request, object_id, form_url='', extra_context=None):
        extra_context = extra_context or {}
        extra_context['show_save_and_add_another'] = False
        extra_context['show_save_and_continue'] = False
        return super(MyModelAdmin, self).change_view(request, object_id,
            form_url, extra_context=extra_context)
Run Code Online (Sandbox Code Playgroud)

当我使用我的 change_view 时,这很有效,但是当我添加模型的新实例时,按钮会重新出现。我尝试了以下方法:

    def add_view(self, request, form_url='', extra_context=None):
        extra_context = …
Run Code Online (Sandbox Code Playgroud)

django django-templates django-admin django-guardian django-1.6

3
推荐指数
1
解决办法
3543
查看次数

Django-Guardian可以做什么,Django Auth Permissions不可能做到这一点?

django-guardian提供的功能有哪些,django auth的权限尚未提供?

以下是django-guardian文档列出的功能:

  • Django的对象权限
  • 匿名用户支持
  • 高级API
  • 经过严格测试
  • Django的管理集成
  • 装饰

"对象级"权限是什么意思?是否与在auth的权限中已经支持的对象实例分配权限相同?

"不仅可以为每种类型的对象设置权限,还可以为每个特定的对象实例设置权限."

https://docs.djangoproject.com/en/dev/topics/auth/default/#default-permissions

django django-guardian

2
推荐指数
1
解决办法
1520
查看次数

如何在自定义用户模型中使用 django-guardian

我正在使用 django-guardian 检查用户的对象权限。在我的特殊情况下,我扩展了用户模型。在我的 models.py 中,我扩展了这样的用户模型: 在此处输入图像描述

class User(AbstractBaseUser):
    email = models.EmailField(
        verbose_name='email address',
        max_length=255,
        unique=True,
    )
    active = models.BooleanField(default=True)
    staff = models.BooleanField(default=False) 
    admin = models.BooleanField(default=False) 

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = [] # Email & Password are required by default.

    def get_full_name(self):
        # The user is identified by their email address
        return self.email

    def get_short_name(self):
        # The user is identified by their email address
        return self.email

    def __str__(self):              # __unicode__ on Python 2
        return self.email

    def has_perm(self, perm, obj=None):
        "Does the …
Run Code Online (Sandbox Code Playgroud)

django python-3.x django-guardian

2
推荐指数
1
解决办法
1937
查看次数

如何在Django的固定装置中引用ContentType?

我正在使用django-guardian为Django项目编写测试。权限的夹具如下所示:

- fields:
    content_type: 10
    object_pk: '2'
    permission: 22
    user: 1
  model: guardian.userobjectpermission
  pk: 1
Run Code Online (Sandbox Code Playgroud)

它是安全的基准content_type,并permission通过ID?还是ID会改变(即当我添加额外的权限/模型时)?

引用自动加载的对象的最佳方法是什么?

django django-fixtures django-guardian

1
推荐指数
1
解决办法
532
查看次数

自定义和非托管用户模型/ Lagacy用户表

我正在尝试django-guardian使用自定义用户模型。该模型从继承AbstractUser,也从继承GuardianUserMixin。这是User模型:

class User(AbstractUser, GuardianUserMixin):

    class Meta:
        managed = False
        db_table = 'users'
Run Code Online (Sandbox Code Playgroud)

我面临的问题是在检查权限时。例如这里request.user.has_perm(...)

这是错误消息:

ProgrammingError at /manageDb/mira/follow/14/ relation "users_groups" does not exist LINE 1: ...sion"."group_id" = "auth_group"."id" ) INNER JOIN "users_gro...

追溯:

    File "/home/khajvah/Project/mira_website/manageDb/views.py" in delete
  486.             if request.user.has_perm('follow', follow_object):
File "/usr/local/lib/python3.4/dist-packages/django/contrib/auth/models.py" in has_perm
  353.         return _user_has_perm(self, perm, obj)
File "/usr/local/lib/python3.4/dist-packages/django/contrib/auth/models.py" in _user_has_perm
  281.             if backend.has_perm(user, perm, obj):
File "/usr/local/lib/python3.4/dist-packages/guardian/backends.py" in has_perm
  89.         return check.has_perm(perm, obj)
File "/usr/local/lib/python3.4/dist-packages/guardian/core.py" in has_perm
  54. …
Run Code Online (Sandbox Code Playgroud)

python django permissions model django-guardian

1
推荐指数
1
解决办法
392
查看次数