Django Rest: view does not want to import

I am doing the exercise using the Django Rest Framework tutorial ( http://www.django-rest-framework.org/tutorial/1-serialization )

I'm in the process of creating URLs, and I have a problem getting submissions.

I am executing the code:

import snippets from views 

I can not import the views, I get:

 'module' object has no attribute 'snippet_list' 

My code views:

 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) 

My URL code is:

 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), ] 
+7
python import django django-rest-framework
source share
1 answer

This is just an indentation problem, you should change your /views.py snippets to:

 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) 
+13
source share

All Articles