Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将基于类的视图转换为';正常';看法_Python_Django_Django Rest Framework - Fatal编程技术网

Python 将基于类的视图转换为';正常';看法

Python 将基于类的视图转换为';正常';看法,python,django,django-rest-framework,Python,Django,Django Rest Framework,我编写了以下django rest框架视图: # urls.py url(r'user/company', views.UserViewSet.as_view({"get": "companyInfo"}), name="company_info"), # views.py class UserViewSet(viewsets.ModelViewSet): serializer_class = UserSerializer queryset = User.objects.all

我编写了以下django rest框架视图:

# urls.py
url(r'user/company', views.UserViewSet.as_view({"get": "companyInfo"}), name="company_info"),

# views.py
class UserViewSet(viewsets.ModelViewSet):
    serializer_class = UserSerializer
    queryset = User.objects.all()
    permission_classes = (permissions.IsAuthenticated,)

    @action(methods=["get"], detail=True)
    def companyInfo(self, request):
        user = request.user
        company = user.get_company()
        detail = {}
        detail['company'] = company.name
        detail['num_users'] = company.num_licenses if company else None        
        return Response(detail) 
如何使用django rest框架编写与“普通”django视图完全相同的视图。例如,类似这样的内容:

# urls.py
path('user/company/', views.company_info, name='company_info'),

# views.py
@require_GET
def company_info(request):
    user = request.user
    company = user.get_company()
    detail = {}
    detail['company'] = company.name
    detail['num_users'] = company.num_licenses if company else None        
    return Response(detail) 

我想以上只是一个开始,但我认为我仍然需要正确地进行身份验证(使用jwt),这是
UserViewSet
使用
permission\u classes=(permissions.IsAuthenticated,)
自动完成的。您可能希望添加两个decorator,使其成为一个经过身份验证的API视图,就像在类视图中一样:

# path('user/company/', views.company_info, name='company_info'),

@api_view(['GET'])
@permission_classes((permissions.IsAuthenticated,))
def company_info(request):
    user = request.user
    company = user.get_company()

    detail = {}
    detail['company'] = company.name
    detail['num_users'] = company.num_licenses if company else None
    detail['company_admin'] = company.admin_user.name if company else None

    return Response(detail)         

@VaibhavVishal是的,我知道我的函数是不完整的——它在这里没有身份验证,这就是为什么我要问——看看如何使它“正确”。身份验证的意思是你只想让那些已经登录的用户访问视图?@VaibhavVishal correct,已经直接登录到应用程序的人(在django中)或者通过api通过jwt