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