2015-10-22 67 views
3

这是我第一个使用Django rest框架的web服务。'list'对象没有属性'get'

这是我settigngs看起来像

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'rest_framework' 
) 

data.py:

from rest_framework.views import View 
from rest_framework.response import Response 
from rest_framework import status 

ORDERS = [ 
    ['0', 'John', 'Apple'], 
    ['1', 'John', 'Orange'], 
    ['2', 'John', 'Lemon'], 
    ['3', 'Jane', 'Apple'], 
    ['4', 'Jane', 'Banana'], 
    ['5', 'Bill', 'Pineapple'], 
    ['6', 'Bob', 'Orange'] 
] 

class Orders(View): 
    """ 
    Provides access to all orders within the system. 
    """ 

    def get(self, request): 
     """ 
     Return a list of all orders. 
     """ 
     return ORDERS 

class CustomerOrders(View): 
    """ 
    Provides access to all orders for a specific customer. 
    """ 
    def get(self, request, customer): 
     """ 
     Return a list of all orders for a specific customer. 
     """ 
     customerOrders = [] 
     for order in ORDERS: 
      if order[1] == customer: 
       customerOrders.append(order) 
     return customerOrders 

class Order(View): 
    """ 
    Provides access to individual orders. 
    """ 
    def get(self, request, id): 
     """ 
     Return a specific order given it's ID. 
     """ 
     orderWithId = None 
     for order in ORDERS: 
      if order[0] == id: 
       orderWithId = order 
       break 
     return orderWithId 

而且urls.py

from django.conf.urls import patterns, include, url 
from data import * 

urlpatterns = patterns('', 
    url(r'^Data/Orders/$', Orders.as_view(), name='Orders') 
) 

错误:

Environment: 


Request Method: GET 
Request URL: http://localhost:8000/Data/Orders/ 

Django Version: 1.8.5 
Python Version: 2.7.10 
Installed Applications: 
('django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'rest_framework') 
Installed Middleware: 
('django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware', 
'django.middleware.security.SecurityMiddleware') 


Traceback: 
File "C:\python27\lib\site-packages\django\core\handlers\base.py" in get_response 
    223.     response = middleware_method(request, response) 
File "C:\python27\lib\site-packages\django\middleware\clickjacking.py" in process_response 
    31.   if response.get('X-Frame-Options', None) is not None: 

Exception Type: AttributeError at /Data/Orders/ 
Exception Value: 'list' object has no attribute 'get' 
+0

添加的错误 – Sajeetharan

回答

0

由于您尝试使用django rest框架构建Web服务。与普通的HttpResponse不同,Response对象有助于呈现客户端请求的正确内容类型。

在你views.py包括:

from rest_framework.response import Response 

和,而不是仅仅

return ORDERS 

信息:

return Response(ORDERS) 
0

更换

return ORDERS 

随着

return HttpResponse(ORDERS) 

您需要导入

from django.http import HttpResponse 
相关问题