2016-12-01 97 views
-2

我在google找到消息返回,找不到。 什么是我的代码不张贴值正确? 我需要帮助解决方案正确。 由于使用基于表单的通用视图? Im desenv restAPI,我不理解我的代码中的问题,我运行并返回: 我检索消息,流量。 enter image description herePOST不工作Django Rest Framework

enter image description here

views.py:

from snippets.models import Equipamento, Colaborador 
from snippets.serializers import EquipamentoSerializer, ColaboradorSerializer 
from rest_framework import mixins 
from rest_framework import generics 

class EquipamentoList(generics.ListCreateAPIView): 
    serializer_class = EquipamentoSerializer 

    def get_queryset(self): 
     queryset = Equipamento.objects.all() 
     id = self.request.query_params.get('id', None) 
     if id is not None: 
      queryset = queryset.filter(id=id) 
     return queryset 


# class ColaboradorList(generics.CreateAPIView): 
#  queryset = Colaborador.objects.all() 
#  serializer_class = ColaboradorSerializer 

#  def get_queryset(self): 
#   queryset = Colaborador.objects.all() 
#   id = self.request.query_params.get('id', None) 
#   if id is not None: 
#    queryset = queryset.filter(pk=pk) 
#   return queryset 

#  def create(self, request, pk): 
#   queryset = Colaborador.objects.all() 
#   return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 



# class ColaboradorDetail(generics.RetrieveUpdateDestroyAPIView): 
#  queryset = Colaborador.objects.all() 
#  serializer_class = ColaboradorSerializer 

class ColaboradorList(mixins.ListModelMixin, 
        mixins.CreateModelMixin, 
        generics.GenericAPIView): 
    queryset = Colaborador.objects.all() 
    serializer_class = ColaboradorSerializer 

    def get(self, request, *args, **kwargs): 
     return self.list(request, *args, **kwargs) 

    def post(self, request, *args, **kwargs): 
     return self.create(request, *args, **kwargs) 

class ColaboradorDetail(mixins.RetrieveModelMixin, 
        mixins.UpdateModelMixin, 
        mixins.DestroyModelMixin, 
        generics.GenericAPIView): 
    queryset = Colaborador.objects.all() 
    serializer_class = ColaboradorSerializer 

    def get(self, request, *args, **kwargs): 
     return self.retrieve(request, *args, **kwargs) 

    def put(self, request, *args, **kwargs): 
     return self.update(request, *args, **kwargs) 

    def delete(self, request, *args, **kwargs): 
     return self.destroy(request, *args, **kwargs) 

serializers.py

from rest_framework import serializers 
from rest_framework.validators import UniqueValidator 
from snippets.models import Equipamento, Colaborador, Propriedade, MotivoParada, Apontamento 

class EquipamentoSerializer(serializers.Serializer): 
    id = serializers.IntegerField(read_only=True) 
    cod_equip = serializers.IntegerField(validators=[UniqueValidator(queryset=Equipamento.objects.all())]) 
    desc_equip = serializers.CharField(allow_blank=True, max_length=15, required=False) 

    def restore_object(self, attrs, instance=None): 
     """ 
     Create or update a new snippet instance, given a dictionary 
     of deserialized field values. 

     Note that if we don't define this method, then deserializing 
     data will simply return a dictionary of items. 
     """ 
     if instance: 
      # Update existing instance 
      instance.id = attrs.get('id', instance.id) 
      instance.cod_equip = attrs.get('cod_equip', instance.cod_equip) 
      instance.des_equip = attrs.get('desc_equip', instance.desc_equip) 
      return instance 
     # Create new instance 
     return Equipamento(**attrs) 

class ColaboradorSerializer(serializers.Serializer): 
    id = serializers.IntegerField(read_only=True) 
    cod_colab = serializers.IntegerField(validators=[UniqueValidator(queryset=Colaborador.objects.all())]) 
    nome_colab = serializers.CharField(max_length=30) 

    def restore_object(self, attrs, instance=None): 
     """ 
     Create or update a new snippet instance, given a dictionary 
     of deserialized field values. 

     Note that if we don't define this method, then deserializing 
     data will simply return a dictionary of items. 
     """ 
     if instance: 
      # Update existing instance 
      instance.id = attrs.get('id', instance.id) 
      instance.cod_colab = attrs.get('cod_colab', instance.cod_colab) 
      instance.nome_colab = attrs.get('nome_colab', instance.nome_colab) 
      return instance 
     # Create new instance 
     return Colaborador(**attrs) 

class ApontamentoSerializer(serializers.Serializer): 
    id = serializers.IntegerField(read_only=True) 
    criado = serializers.DateTimeField(read_only=True) 
    apont_inicio = serializers.TimeField() 
    apont_fim = serializers.TimeField() 
    duracao = serializers.TimeField() 
    equipamento = serializers.PrimaryKeyRelatedField(queryset=Equipamento.objects.all()) 
    colaborador = serializers.PrimaryKeyRelatedField(queryset=Colaborador.objects.all()) 
    propriedade = serializers.PrimaryKeyRelatedField(queryset=Propriedade.objects.all()) 
    m_parada = serializers.PrimaryKeyRelatedField(queryset=MotivoParada.objects.all()) 

    def restore_object(self, attrs, instance=None): 
     """ 
     Create or update a new snippet instance, given a dictionary 
     of deserialized field values. 

     Note that if we don't define this method, then deserializing 
     data will simply return a dictionary of items. 
     """ 
     if instance: 
      # Update existing instance 
      instance.id = attrs.get('id', instance.id) 
      instance.criado = attrs.get('criado', instance.criado) 
      instance.apont_inicio = attrs.get('apont_inicio', instance.apont_inicio) 
      instance.apont_fim = attrs.get('apont_fim', instance.apont_fim) 
      instance.duracao = attrs.get('duracao', instance.duracao) 
      instance.equipamento = attrs.get('equipamento', instance.equipamento) 
      instance.colaborador = attrs.get('colaborador', instance.colaborador) 
      instance.propriedade = attrs.get('propriedade', instance.propriedade) 
      instance.m_parada = attrs.get('m_parada', instance.m_parada) 
      return instance 
     # Create new instance 
     return Apontamento(**attrs) 

class PropriedadeSerializer(serializers.Serializer): 
    id = serializers.IntegerField(read_only=True) 
    cod_prop = serializers.IntegerField(validators=[UniqueValidator(queryset=Propriedade.objects.all())]) 
    desc_prop = serializers.CharField(max_length=30) 

    def restore_object(self, attrs, instance=None): 
     """ 
     Create or update a new snippet instance, given a dictionary 
     of deserialized field values. 

     Note that if we don't define this method, then deserializing 
     data will simply return a dictionary of items. 
     """ 
     if instance: 
      # Update existing instance 
      instance.id = attrs.get('id', instance.id) 
      instance.cod_prop = attrs.get('cod_prop', instance.cod_prop) 
      instance.des_prop = attrs.get('desc_prop', instance.desc_prop) 
      return instance 
     # Create new instance 
     return Propriedade(**attrs) 

class MotivoParadaSerializer(serializers.Serializer): 
    id = serializers.IntegerField(read_only=True) 
    cod_mparada = serializers.IntegerField(validators=[UniqueValidator(queryset=MotivoParada.objects.all())]) 
    desc_mparada = serializers.CharField(max_length=30) 

    def restore_object(self, attrs, instance=None): 
     """ 
     Create or update a new snippet instance, given a dictionary 
     of deserialized field values. 

     Note that if we don't define this method, then deserializing 
     data will simply return a dictionary of items. 
     """ 
     if instance: 
      # Update existing instance 
      instance.id = attrs.get('id', instance.id) 
      instance.cod_mparada = attrs.get('cod_mparada', instance.cod_mparada) 
      instance.des_mparada = attrs.get('desc_mparada', instance.desc_mparada) 
      return instance 
     # Create new instance 
     return MotivoParada(**attrs) 

urls.py

from django.conf.urls import url 
# from snippets.views import EquipamentoList, ColaboradorList, ColaboradorDetail 
from snippets import views 
from rest_framework.urlpatterns import format_suffix_patterns 

urlpatterns = [ 
# url(r'^snippets/$', views.snippet_list), 
# url(r'^snippets/(?P<pk>[0-9]+)/$', views.snippet_detail), 
    # url('^equipamento/(?P<id>.+)/$', EquipamentoList.as_view()), 
    #url('^colab/(?P<id>.+)/$', ColaboradorList.as_view()), 
    url('^colab/$', views.ColaboradorList.as_view()), 
    url('^colab_add/(?P<pk>[0-9]+)/$', views.ColaboradorDetail.as_view()), 
] 

urlpatterns = format_suffix_patterns(urlpatterns)I find message return in google, not find solv problem? 

帮助。 什么是我的代码不张贴值? 我需要帮助解决方案正确。

+0

你有所有需要的错误信息... – opalczynski

回答

0

错误消息非常简单。您的序列化程序使用restore_object方法,该方法在Rest Framework 3中不推荐使用。将您的Django Rest Framework版本降级到2.x,或者(推荐)重写代码以使其与Rest Framework的最新版本兼容。

相关问题