您的位置:

解决ValueError("Permission name should be in the form ""app_label.permission_codename.")在django出现报错

  发布时间:2023-03-04 08:10:40
报错的原因错误的原因是你使用了一个不正确的权限名。在 Django 中,权限名必须是的形式,其中 app_label 是应用的名称是权限的名称。例如使用 Django 的 contenttypes 框架来动态获取权限名。使用例子是的,我可以为你提供一个例子。假设你有如下模型你希望检查用户是否有权限添加 Poll 对象,你可以使用以下方法之一:手动指定权限名使用 Django 的 contenttypes 框架来动态获取权限名希望这些信息能帮助你解决问题。

报错的原因

ValueError("Permission name should be in the form "app_label.permission_codename.") 错误的原因是你使用了一个不正确的权限名。

在 Django 中,权限名必须是 "app_label.permission_codename" 的形式,其中 app_label 是应用的名称,permission_codename 是权限的名称。例如:


'polls.add_poll'

如果你使用了不正确的权限名,就会出现这个错误。例如:


'add_poll'

为了解决这个问题,你需要使用正确的权限名。例如:


'polls.add_poll

为了解决 ValueError("Permission name should be in the form "app_label.permission_codename.") 错误,你需要使用正确的权限名。例如:


'polls.add_poll'

你还可以使用 Django 的 contenttypes 框架来动态获取权限名。例如:


from django.contrib.contenttypes.models import ContentType

content_type = ContentType.objects.get_for_model(Model)
permission_name = '{}.{}'.format(content_type.app_label, permission_codename)

希望这些信息能帮助你解决问题。

如何解决

为了解决 ValueError("Permission name should be in the form "app_label.permission_codename.") 错误,你需要使用正确的权限名。你可以使用以下两种方法之一:

1. 手动指定权限名。例如:


permission_name = 'polls.add_poll'

2. 使用 Django 的 contenttypes 框架来动态获取权限名。例如:


from django.contrib.contenttypes.models import ContentType

content_type = ContentType.objects.get_for_model(Model)
permission_name = '{}.{}'.format(content_type.app_label, permission_codename)

希望这些信息能帮助你解决问题。

使用例子

是的,我可以为你提供一个例子。假设你有如下模型:


class Poll(models.Model):
    question = models.CharField(max_length=200)

你希望检查用户是否有权限添加 Poll 对象,你可以使用以下方法之一:

1. 手动指定权限名。


permission_name = 'polls.add_poll'
user.has_perm(permission_name)

2. 使用 Django 的 contenttypes 框架来动态获取权限名。


from django.contrib.contenttypes.models import ContentType

content_type = ContentType.objects.get_for_model(Poll)
permission_name = '{}.add_{}'.format(content_type.app_label, content_type.model)
user.has_perm(permission_name)

希望这些信息能帮助你解决问题。