2014-02-07 68 views
1

我正在使用django的通用视图(django.views.generic.base)实现GET,POST,PUT方法。Django PUT方法不返回HttpResponse对象

GET和POST方法工作正常。 但是,PUT方法没有返回任何HttpResponse对象,尽管我从服务器获取代码200 OK,但没有数据。

我认为这可能是与跨源资源共享(CORS)相关的问题。

任何人都可以指出我正确的方向来解决这个问题吗?

我使用nginx + uwsgi进行deplyoment。


编辑: 我已经启用的nginx服务器来处理PUT和OPTIONS HTTP动词。


这里是我的PUT代码:

def put(self, request, *args, **kwargs): 
    """ 
    Update from the controller with info that all the commands has 
    been successfully executed on that controller 
    :param mac: 
    :param request: 
    :param args: 
    :param kwargs: 
    """ 
self.true_response["mac"] = None 
self.false_response["mac"] = None 
if request.method == 'PUT': 
     if "mac" in kwargs: 
       mac = kwargs["mac"] 
     self.true_response["mac"] = mac 
     self.false_response["mac"] = mac 
     query = "SELECT COUNT(1) FROM controller WHERE \ 
      `controller_mac` = '%s'" % mac 
      cursor = connections['cnms'].cursor() 
      cursor.execute(query) 
      result = cursor.fetchall() 
      if not result[0][0]: 
      return HttpResponse(json.dumps(self.false_response)) 
     try: 
      query = """ UPDATE command SET command_status = 2 WHERE \ 
       command_mac '%s'""" % mac 
      cursor = connections['cnms'].cursor() 
      cursor.execute(query) 
      return HttpResponse(json.dumps(self.true_response)) 
     except Exception as error: 
      return HttpResponse(json.dumps(self.false_response)) 
     else: 
       return HttpResponse(json.dumps({"status" : "false"})) 
else: 
    return HttpResponse("Method is Not Supported") 
+0

你可以发布你的视图的代码? – lai

+0

@lai ::我已经发布了我的PUT代码 – dotslash

回答

0

所以,第一,你的数据库查询是不安全的,这取决于“陆委会”应该包含。 查看How to use variables in SQL statement in Python?以了解有关如何解决此问题的更多详细信息。

其次,你知道你的代码分支在哪里吗?

“mac”kwarg是否正确地通过该方法?

就我而言,我也用明确指定的JSON响应的MIME类型,例如:

HttpResponse(json_dictionary, mimetype="application/json; charset=utf-8") 

也许可以帮助?

相关问题