模型和权限
Model and Permissions
我正在学习python/django
作为我自己的教程,我已经做到了:
- 创建用户 --> 确定
- 已创建登录用户 --> ok
- 创建一个名为 'Article' 的新模型,将标题和内容作为属性 --> ok
- 创建几个 'Article' 个实例 --> ok
- 我在 webapp 的根目录下显示所有文章 -->
- 最后一步是:为了操纵权限,只显示一些文章,具体取决于哪个用户使用权限登录。就像如果用户 A:那么只显示带有奇数 ID 的文章(这没有任何意义,但它是为了学习)
用手做'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)
我正在学习python/django 作为我自己的教程,我已经做到了:
- 创建用户 --> 确定
- 已创建登录用户 --> ok
- 创建一个名为 'Article' 的新模型,将标题和内容作为属性 --> ok
- 创建几个 'Article' 个实例 --> ok
- 我在 webapp 的根目录下显示所有文章 -->
- 最后一步是:为了操纵权限,只显示一些文章,具体取决于哪个用户使用权限登录。就像如果用户 A:那么只显示带有奇数 ID 的文章(这没有任何意义,但它是为了学习)
用手做'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)