django - 模型和权限

标签 django django-models

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

  • 创建用户 --> ok
  • 已创建登录用户 --> ok
  • 创建一个名为“文章”的新模型,将标题和内容作为属性 --> ok
  • 创建几个“文章”实例 --> ok
  • 我在 webapp 的根目录下显示所有文章 -->
  • 最后一步是:为了操纵权限,只显​​示一些文章,具体取决于哪个用户使用权限登录。就像如果用户 A:那么只显示带有奇数 ID 的文章(这没有任何意义,但它是为了学习)

手写“permission by instance”好像很复杂吧?

干杯

最佳答案

首先我们必须创建我们的 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()

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

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)

关于django - 模型和权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30156375/

相关文章:

Django 将 `choices` 添加到继承的模型字段

python - django 模型表单自定义字段

python - 如何防止多对多类链接到相同的对象?

python - 如何从 Django 选择字段中的值中检索键?

python - 如何按多对多相关对象值对查询集进行排序?

python - Django:使用外键过滤查询不起作用

django - 无法在 Django 1.5 中使用自定义用户模型创建 super 用户

python - 运行 django 教程测试失败 - 没有名为 polls.tests 的模块

python - 字段中项目的 Django 计数

python - 在 django 中区分大小写的 'exact' 查询返回多个不同的结果