模型和权限

Model and Permissions

我正在学习python/django 作为我自己的教程,我已经做到了:

用手做'permission by instance'好像很复杂吧?

干杯

当你说 'I need permission by instance' 时,你可能指的是 'I need to use django-guardian' https://django-guardian.readthedocs.org/en/stable/

首先我们必须创建我们的 2 个权限

from django.db import models

class Article(models.Model):
    title = models.TextField()
    content = models.TextField()

    class Meta:
        permissions = (
            ('can_view_odd_ids', 'can_view_odd_ids'),
            ('can_view_even_ids', 'can_view_even_ids'),
        )

    def __str__(self):
        return self.title

在 运行 迁移之后,我们可以使用 shell

手动将权限应用到我们的用户
odd_even = Permission.objects.get(name='can_view_even_ids')
user_yui = User.objects.get(username='yui')
user_yui.user_permissions.add(odd_even)
user_yui.save()

然后在视图中测试我们用户的权限(类似的东西)

def my_view(request):
    data = {}
    if request.user.is_authenticated():
        count = Article.objects.all().count()
        if request.user.has_perm("account.can_view_odd_ids"):
            data = {'articles': Article.objects.all()[1::2]})
        elif request.user.has_perm("account.can_view_even_ids"):
            data = {'articles': Article.objects.all()[0::2]})
    return render(request, 'index.html', data)