Python 属性错误'';对象没有属性';获取';在Get请求中返回对象时

Python 属性错误'';对象没有属性';获取';在Get请求中返回对象时,python,django,django-templates,django-views,Python,Django,Django Templates,Django Views,这是请求的url:GET/api/v1/companys/profile/?name=TestFirma 我是django的新手,这是我第一次尝试在django中通过GET请求传递参数 我已经使用logger测试了名称(TestFirma)实际传递给获取_对象的过程 我不明白为什么公司应该有一个get方法?我在这里误解了什么 def get_object(request, name): name = request.GET.get('name', '') if name is n

这是请求的url:GET/api/v1/companys/profile/?name=TestFirma 我是django的新手,这是我第一次尝试在django中通过GET请求传递参数

我已经使用logger测试了名称(TestFirma)实际传递给获取_对象的过程

我不明白为什么公司应该有一个get方法?我在这里误解了什么

def get_object(request, name):
    name = request.GET.get('name', '')
    if name is not None:
        company = Company.objects.get(name=name)
        return company
堆栈:

[04/Jan/2016 13:40:49] "GET /static/templates/company/profile.html HTTP/1.1" 200 133
Internal Server Error: /api/v1/companies/profile/
Traceback (most recent call last):
  File "C:\Users\Alexander\widewidewideass\lib\site-packages\django\core\handlers\base.py", line 223, in get_response
    response = middleware_method(request, response)
  File "C:\Users\Alexander\widewidewideass\lib\site-packages\django\middleware\clickjacking.py", line 31, in process_response
    if response.get('X-Frame-Options', None) is not None:
AttributeError: 'Company' object has no attribute 'get'
Internal Server Error: /api/v1/companies/profile/
Traceback (most recent call last):
  File "C:\Users\Alexander\widewidewideass\lib\site-packages\django\core\handlers\base.py", line 223, in get_response
    response = middleware_method(request, response)
  File "C:\Users\Alexander\widewidewideass\lib\site-packages\django\middleware\clickjacking.py", line 31, in process_response
    if response.get('X-Frame-Options', None) is not None:
AttributeError: 'Company' object has no attribute 'get'
[04/Jan/2016 13:40:49] "GET /api/v1/companies/profile/?name=TestFirma HTTP/1.1" 500 75282
[04/Jan/2016 13:40:49] "GET /favicon.ico HTTP/1.1" 200 6524

我假设您希望返回
公司
对象的JSON响应。如果这是您想要的,那么您应该序列化该对象,然后将其作为
HttpResponse
对象返回

import json

from django.http import HttpResponse
from django.core import serializers

def get_object(request, name):
    name = request.GET.get('name', '')
    if name is not None:
        obj = Company.objects.get(name=name)
        company = serializers.serialize('json', [obj,])
        struct = json.loads(company)
        data = json.dumps(struct[0])
        return HttpResponse(data, content_type='json')

Company
是一个模型类吗?@VineethGuna是的:)是的,没错,但我以前用过这个。为什么这样做有效,但在我遇到麻烦的情况下不行?@Patidati-这只是一个可以返回任何对象的简单方法。但在Django中,视图函数是一个Python函数,它接受Web请求并返回Web响应。Doc.@Patidati-基本上每个视图函数都负责返回
HttpResponse
对象(在几乎所有情况下)。Django使用自己的内置响应类。你应该用这个。您可以从中阅读更多关于它的信息。您还有
django.http.JsonResponse
,这使它更简单。