我试图用权限实现基于类的视图,但它们似乎没有连接,尽管我相信我严格遵守了Django用户指南。 第一:在accounts.models中基于代理设置自定义用户模型
class CustomUser(AbstractUser):
some_fields...
然后,我创建了一个经理:
class EmployeeManager(models.Manager):
def get_queryset(self, *args, **kwargs):
return super().get_queryset(*args, **kwargs).filter(status_type=CustomUser.StatusType.EMPLOYEE)
然后是配置文件的类型:
class Employee(CustomUser):
objects = EmployeeManager()
class Meta:
proxy = True
permissions = [("communities.view_region", "Can view region")]
在我设置权限的地方,进行迁移和迁移。 之后,我创建视图:
import communities.models as comms
class RegionsListView(ListView):
model = comms.Region
然后,配置url及其视图:
rom django.urls import path, include
import communities.views as views
from django.contrib.auth.decorators import permission_required
app_name = 'communities'
urlpatterns = [
path("regions/list/", permission_required("communities.view_region")(views.RegionsListView.as_view()))
然后我以员工身份登录,调用此url时出现错误403
我错过了什么? 备注:
permission_required = 'communities.view_region'
会产生相同的结果李>
谢谢你的建议。 然而,仍然有一些事情我没有抓住。。。因此,我寻找了一种新的方法,并开始使用Oso,这是一个很棒的授权库。它工作得很好:Link to their WebSite
为了实现权限,必须在创建新用户时以编程方式完成。 在工作流中
这是代码
相关问题 更多 >
编程相关推荐