2013-07-17 2 views
0

django를 처음 접하고 서버의 ID 목록을 보내 일부 정보를 업데이트하려고합니다. 나는 그들에게 모델 클래스가되기를 원하지 않는다. 내가 뭘하려고하는지 그들은 serializer에 넣어 그들이 "깨끗한"있는지 확인하는 것입니다.django는 게시물에서 비 모델을 직렬화 할 수 없습니다.

보기 클래스 :

class Update_Cards(APIView): 
    # This seems necessary or it will throw an error 
    queryset = Card.objects.all() 
    def post(self, request, board_id, format=None): 
     print request.DATA 
     serializer = CardMoveSerializer(data=request.DATA, many=True) 
     #this throws an error 
     print serializer.data 

     return Response(serializer.data) 

시리얼 : 여기 내 코드는

class CardMoveSerializer(serializers.Serializer): 
    card_id = serializers.IntegerField() 
    lane_id = serializers.IntegerField() 

오류 내가 얻을 :

나는 simplejson 파서 이것을 구현했을 무엇
[{u'lane_id': 21, u'card_id': 3}] #this is to show the data is coming across the wire 
Internal Server Error: /api/board/2/updateCards 
Traceback (most recent call last): 
    File "/Library/Python/2.7/site-packages/django/core/handlers/base.py", line 115, in get_response 
    response = callback(request, *callback_args, **callback_kwargs) 
    File "/Library/Python/2.7/site-packages/django/views/generic/base.py", line 68, in view 
    return self.dispatch(request, *args, **kwargs) 
    File "/Library/Python/2.7/site-packages/django/views/decorators/csrf.py", line 77, in wrapped_view 
    return view_func(*args, **kwargs) 
    File "/Library/Python/2.7/site-packages/rest_framework/views.py", line 327, in dispatch 
    response = self.handle_exception(exc) 
    File "/Library/Python/2.7/site-packages/rest_framework/views.py", line 324, in dispatch 
    response = handler(request, *args, **kwargs) 
    File "/Users/crob/Documents/workspace/tlckanban/python/rest/views.py", line 37, in post 
    print card_moves.data 
    File "/Library/Python/2.7/site-packages/rest_framework/serializers.py", line 499, in data 
    self._data = [self.to_native(item) for item in obj] 
TypeError: 'NoneType' object is not iterable 

현재로서는 최선의 방법이라고 생각하지 않습니다.

def update_cards(request, board_id): 
    json_data = simplejson.loads(request.body) 

    for moveIndex in range(0, len(json_data)): 
     #do some work 


    return JSONResponse(json_data, status=status.HTTP_200_OK) 

미리 도움을 청하십시오!

+1

어떤 데이터가보기로 전달됩니까? 몇 가지 샘플을 포함시킬 수 있습니까? –

+0

응용 프로그램이 좋아하지 않는 None 값이 전달 된 것처럼 보입니다. –

+0

오류 메시지의 맨 처음 줄에 request.DATA가 콘솔에 인쇄됩니다. 나는 보내고있다 : [{u'lane_id ': 21, u'card_id': 3}] 그것들은 유일한 2 가지 속성이므로 아무 것도 없어야한다. None – stuffins

답변

1

데이터에 액세스하기 전에 'serializer.is_valid()'에 액세스해야합니다. 거기에 API가없는 것처럼 보입니다. serializer.data는 유효성 검사 전에 액세스 된 경우 expection을 발생시켜야합니다.

+0

감사합니다! 그래, 내가 호출 해야하는 문서에서 인상을 얻지 않았다 is_valid, 나는 단지 인스턴스를 만드는 것이 가능하다고 생각했다. 내 잘못이야. – stuffins

0

Django's serializers을 사용하고 있지 않은 것으로 보이지만 어쨌든 유효성 검사를 위해 직렬화가 이루어지지 않았습니다. forms을 사용하여 데이터의 유효성을 검사 한 다음 json을 사용하여 직렬화하십시오. Django의 시리얼 라이저는 쿼리 세트와 모델 전용입니다.

+0

django-rest-framework serializer를 사용하고있다. : http://django-rest-framework.org/tutorial/2-requests-and-responses.html – stuffins

관련 문제