“ ViewSet”对象没有属性“ _meta”

时间:2020-05-19 21:14:24

标签: python django python-3.x tensorflow django-rest-viewsets

请我需要一些帮助,我正在django项目上工作..并且我在执行 python manage.py runserver 0.0.0.0:9000 时实现了viewset,序列化程序和模型类... strong>命令,当我尝试测试api时出现此错误:

AttributeError at /api/v1/csr/
'CsrViewSet' object has no attribute '_meta'

Request Method: POST
Request URL: http://192.168.56.108:18000/api/v1/csr/
Django Version: 3.0.4
Python Executable: /usr/local/bin/python
Python Version: 3.6.10
Python Path: ['/code', '/usr/local/lib/python36.zip', '/usr/local/lib/python3.6', '/usr/local/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/site-packages']
Server time: Tue, 19 May 2020 17:11:42 +0000
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'rest_framework',
 'drf_yasg',
 'multiselectfield',
 'BerryPki.api']
Installed Middleware:
['BerryPki.middlewares.request.MultipleProxyMiddleware',
 'django.middleware.security.SecurityMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'BerryPki.auth.user.CustomHeaderMiddleware',
 'corsheaders.middleware.CorsMiddleware']


Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/rest_framework/viewsets.py", line 114, in view
    return self.dispatch(request, *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py", line 505, in dispatch
    response = self.handle_exception(exc)
  File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py", line 465, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py", line 476, in raise_uncaught_exception
    raise exc
  File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py", line 502, in dispatch
    response = handler(request, *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/rest_framework/mixins.py", line 19, in create
    self.perform_create(serializer)
  File "/usr/local/lib/python3.6/site-packages/rest_framework/mixins.py", line 24, in perform_create
    serializer.save()
  File "/usr/local/lib/python3.6/site-packages/rest_framework/serializers.py", line 207, in save
    self.instance = self.update(self.instance, validated_data)
  File "/usr/local/lib/python3.6/site-packages/rest_framework/serializers.py", line 979, in update
    info = model_meta.get_field_info(instance)
  File "/usr/local/lib/python3.6/site-packages/rest_framework/utils/model_meta.py", line 35, in get_field_info
    opts = model._meta.concrete_model._meta

Exception Type: AttributeError at /api/v1/csr/
Exception Value: 'CsrViewSet' object has no attribute '_meta'
Request information:
USER: admin

GET: No GET data

POST: No POST data

FILES: No FILES data

COOKIES:
csrftoken = 'bEAxUeHm8MHlX0MCYTilskZ45vMdcNfEMqi1qtHLiarPNSvK3h8UzKWAOzvSiQYd'
sessionid = '9vf0hpkxp1go0hl3iq7nqauq3vguvw1b'

这是我的模特班:

from pygments.lexers import get_all_lexers
from pygments.styles import get_all_styles
from django.contrib.auth.models import PermissionsMixin
from django.contrib.auth.base_user import AbstractBaseUser
from django.utils.translation import gettext as _
from multiselectfield import MultiSelectField
from BerryPki.tools.helpers import *
from BerryPki.auth.permissions import HeaderBasedPermission



from django.conf import settings
matrix_roles = HeaderBasedPermission.load_matrix()
allowed_roles = list(set([elem.role for elem in matrix_roles])) # Convert to a unique list


LEXERS = [item for item in get_all_lexers() if item[1]]
LANGUAGE_CHOICES = sorted([(item[1][0], item[0]) for item in LEXERS])
STYLE_CHOICES = sorted([(item, item) for item in get_all_styles()])
ROLE_CHOICES = sorted([(item, item) for item in allowed_roles])


class Csr(models.Model):

    score = models.CharField(max_length=255)

    class Meta:

        managed = False

    def send_csr(self):

        # print('this is a test of the api ', self.score)
        # self.score =  'this is a test of the api ', self.score

        result = {"score" : "test test "}
        return result 

这是我的viewset类:

from rest_framework import viewsets

from BerryPki.api.models import Csr
from BerryPki.api.serializers import CsrSerializer

from rest_framework.response import Response

from rest_framework.permissions import IsAuthenticated
from BerryPki.auth.permissions import HeaderBasedPermission
from BerryPki.auth.permissions import Rules
from rest_framework import status
from BerryPki.tools.helpers import *

from django_filters.rest_framework import DjangoFilterBackend
from BerryPki.base.viewsets import BaseViewSet


@decorate_all_functions(log_on_call)
class CsrViewSet(BaseViewSet):
    """
    Just for test :  return hardcoded compliance score value.
    """
    queryset = Csr.objects.all()
    serializer_class = CsrSerializer
    http_method_names = ['post']

最后是我的序列化器类:

from rest_framework import fields,serializers
from datetime import datetime
from django.conf import settings
import os
from BerryPki.tools.helpers import *
from BerryPki.auth.permissions import HeaderBasedPermission
from BerryPki.api.models import Csr

matrix_roles = HeaderBasedPermission.load_matrix()
allowed_roles = list(set([elem.role for elem in matrix_roles])) # Convert to a unique list

ROLE_CHOICES = sorted([(item, item) for item in allowed_roles])


@decorate_all_functions(log_on_call)
class CsrSerializer(serializers.ModelSerializer):
    """  
    Just for test
    """

    class Meta:
        fields = '__all__'
        model = Csr 

    def create(self, validated_data):
        """
        List a hadcoded value.
        """
        csr = Csr()
        csr.score = validated_data['score']

        csr.send_csr()    
        return csr  

请谁能帮助我解决这个问题..我是django的新手,我不明白为什么这会导致..非常感谢

0 个答案:

没有答案
相关问题