Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带有django的Json响应列表_Python_Ajax_Json_Django_Typeahead.js - Fatal编程技术网

Python 带有django的Json响应列表

Python 带有django的Json响应列表,python,ajax,json,django,typeahead.js,Python,Ajax,Json,Django,Typeahead.js,我想在Django 1.7的表单中使用。此外,我希望使用基于类的视图来实现这一点 据我所知,我需要创建一个视图,为来自typeahead.js的ajax请求生成JSON响应 使用django牙套是个好主意吗 到目前为止,我得到的是: from braces.views import JSONResponseMixin [...] class TagList(JSONResponseMixin, ListView): """ List Tags """ mode

我想在Django 1.7的表单中使用。此外,我希望使用基于类的视图来实现这一点

据我所知,我需要创建一个视图,为来自typeahead.js的ajax请求生成JSON响应

使用django牙套是个好主意吗

到目前为止,我得到的是:

from braces.views import JSONResponseMixin

[...]

class TagList(JSONResponseMixin, ListView):
    """
    List Tags
    """
    model = Tag
    context_object_name = 'tags'

    def get(self, request, *args, **kwargs):
        objs = self.object_list()

        context_dict = {
            "name": <do something with "obs" to get just the name fields>
            "color": <do something with "obs" to get just the color fields>
        }

        return self.render_json_response(context_dict)
从大括号.views导入JSONResponseMixin
[...]
类标记列表(JSONResponseMixin,ListView):
"""
列表标记
"""
型号=标签
上下文\对象\名称='标记'
def get(自我、请求、*args、**kwargs):
objs=self.object\u list()
上下文内容={
“姓名”:
“颜色”:
}
返回self.render\u json\u响应(context\u dict)

这就是我目前所处的困境。我走对了吗?或者不使用第三方应用程序也可能(而且很容易)吗?

我通常使用python json库,如下所示:

import json
from django.http import HttpResponse

class TagList(ListView):
    ...
    context_dict = {
            "name": <do something with "obs" to get just the name fields>
            "color": <do something with "obs" to get just the color fields>
    }
    return HttpResponse(json.dumps({'context_dict': context_dict}),
                    content_type='application/json; charset=utf8')
导入json
从django.http导入HttpResponse
类标记列表(ListView):
...
上下文内容={
“姓名”:
“颜色”:
}
返回HttpResponse(json.dumps({'context_dict':context_dict}),
content_type='application/json;charset=utf8')
但在新的Django 1.7中,您有


希望您觉得它有用。

序列化非字典对象»

为了序列化dict以外的对象,必须将safe参数设置为False:

response = JsonResponse([1, 2, 3], safe=False)

编辑:

但是请注意,这在代码[1]中引入了一个潜在的严重CSRF漏洞,Django规范不建议这样做,因此称之为不安全。如果您返回的内容需要身份验证,并且您不希望第三方能够捕获它,那么请不惜一切代价避免

为了缓解此漏洞,您应该将列表包装在字典中,如下所示:
{'context':['some','list','elements']}


[1]

应该对其进行编辑。任何类都不应该返回某些内容。正确的方法应该是在标记列表类中重新实现get方法。