gpt4 book ai didi

django - 模型和权限

转载 作者:行者123 更新时间:2023-12-04 06:53:06 25 4
gpt4 key购买 nike

我目前正在学习 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com