2015-01-07 10 views
7

ithal etmek istemiyor istirahat Çerçeve (http://www.django-rest-framework.org/tutorial/1-serialization)Django istirahat: görünüm Django öğretici ile egzersiz yapıyorum

Ben URL'ler oluşturma aşamasında ve ben almak bir sorun var görünümleri. Ben görünümleri alamıyor

import snippets from views 

alacaksınız:

'module' object has no attribute 'snippet_list' 

Kodum görünümler:

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) 

Kodum URL:

Ben kodu çalıştırmak

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), 
] 

cevap

13

Sadece bir girinti sorundur, sen Snippet'lerinizi değiştirmelisiniz/views.py için:

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

Çalışıyor. Yardımınız için teşekkür ederiz. – Mark

+0

Teşekkür ederiz !!! Benim için de çalıştı. –