2015-01-07 2 views
7

가져 오지 않는 나머지 프레임 워크 (http://www.django-rest-framework.org/tutorial/1-serialization)장고 나머지 :보기는 내가 장고 튜토리얼과 함께 운동을하고 있어요

내가 URL을 생성하는 단계에서 그리고 난이에 점점에 문제가 조회수. 내가보기를 가져올 수 없습니다

import snippets from views 

받게됩니다 :

'module' object has no attribute 'snippet_list' 

내 코드 조회수 :

from .models import Snippet 
from serializers import SnippetSerializer 
from rest_framework.renderers import JSONPRenderer 
from rest_framework.parsers import JSONParser 
from django.http import HttpResponse 
from django.views.decorators.csrf import csrf_exempt 

class JSONResponse(HttpResponse): 

    def __init__(self, data, **kwargs): 
     content = JSONPRenderer().render(data) 
     kwargs['content_type'] = 'aplication/json' 
     super(JSONPRenderer, self).__init__(content, **kwargs) 

    @csrf_exempt 
    def snippet_list(request): 
     """ 
     List all code snippets or create new code snippet 
     """ 
     if request.method == "GET": 
      snippet = Snippet.objects.all() 
      serializer = SnippetSerializer(snippet, many=True) 
      return JSONResponse(serializer.data) 

     elif request.method == "POST": 
      data = JSONParser().parse(request) 
      serializer = SnippetSerializer(data=data) 
      if serializer.is_valid(): 
       serializer.save() 
       return JSONResponse(serializer.data, status=201) 
      return JSONResponse(serializer.data, status=400) 

    @csrf_exempt 
    def snippet_detail(request, pk): 
     """ 
     Retrive, delete or update code snippet 
     """ 
     try: 
      snippet = Snippet.objects.get(pk=pk) 
     except Snippet.DoesNotExist: 
      return HttpResponse(status=404) 

     if request.response == "GET": 
      serializer = SnippetSerializer(snippet) 
      return JSONResponse(serializer.data) 

     elif request.method == "PUT": 
      data = JSONParser().parse(request) 
      serializer = SnippetSerializer(snippet, data=data) 
      if serializer.is_valid(): 
       serializer.save() 
       return HttpResponse(serializer.data) 
      return HttpResponse(serializer.errors, status=400) 

     elif request.method == "DELETE": 
      snippet.delete() 
      return HttpResponse(status=204) 

내 코드 URL :

나는 코드를 실행

from django.conf.urls import url 
from snippets import views 


urlpatterns = [ 
    url(r'snippets/$', views.snippet_list), 
    url(r'snippets/(?P<pk>[0-9]+)/$', views.snippet_detail), 
] 

답변

13

그냥 들여 쓰기 문제, 당신이 당신의 조각을 변경해야합니다/views.py에 :

from .models import Snippet 
from serializers import SnippetSerializer 
from rest_framework.renderers import JSONPRenderer 
from rest_framework.parsers import JSONParser 
from django.http import HttpResponse 
from django.views.decorators.csrf import csrf_exempt 

class JSONResponse(HttpResponse): 

    def __init__(self, data, **kwargs): 
     content = JSONPRenderer().render(data) 
     kwargs['content_type'] = 'aplication/json' 
     super(JSONPRenderer, self).__init__(content, **kwargs) 

@csrf_exempt 
def snippet_list(request): 
    """ 
    List all code snippets or create new code snippet 
    """ 
    if request.method == "GET": 
     snippet = Snippet.objects.all() 
     serializer = SnippetSerializer(snippet, many=True) 
     return JSONResponse(serializer.data) 

    elif request.method == "POST": 
     data = JSONParser().parse(request) 
     serializer = SnippetSerializer(data=data) 
     if serializer.is_valid(): 
      serializer.save() 
      return JSONResponse(serializer.data, status=201) 
     return JSONResponse(serializer.data, status=400) 

@csrf_exempt 
def snippet_detail(request, pk): 
    """ 
    Retrive, delete or update code snippet 
    """ 
    try: 
     snippet = Snippet.objects.get(pk=pk) 
    except Snippet.DoesNotExist: 
     return HttpResponse(status=404) 

    if request.response == "GET": 
     serializer = SnippetSerializer(snippet) 
     return JSONResponse(serializer.data) 

    elif request.method == "PUT": 
     data = JSONParser().parse(request) 
     serializer = SnippetSerializer(snippet, data=data) 
     if serializer.is_valid(): 
      serializer.save() 
      return HttpResponse(serializer.data) 
     return HttpResponse(serializer.errors, status=400) 

    elif request.method == "DELETE": 
     snippet.delete() 
     return HttpResponse(status=204) 
+0

그것은 작동합니다. 도움을 주셔서 감사합니다 – Mark

+0

감사합니다 !!! 그것은 나를 위해 일했습니다. –

관련 문제