Django 如何使视图返回序列化数据?

Django 如何使视图返回序列化数据?,django,tastypie,Django,Tastypie,在下面的示例中,URL被覆盖,因此我可以传递如下内容 ,这样做会将参数传递到包裹视图,当我执行self.create_响应(请求、数据)时,浏览器仅显示以下内容 0x2e27a50处的api.Entry对象 在浏览器中,字段不会序列化: 注意:我在这个阶段不需要ModelResource。如何使自定义视图调度_数据返回像obj_get和get_object_list这样的数据?下面是一段有问题的代码: #Object class Class Entry(object) name = ''

在下面的示例中,URL被覆盖,因此我可以传递如下内容 ,这样做会将参数传递到包裹视图,当我执行self.create_响应(请求、数据)时,浏览器仅显示以下内容

0x2e27a50处的api.Entry对象

在浏览器中,字段不会序列化: 注意:我在这个阶段不需要ModelResource。如何使自定义视图调度_数据返回像obj_get和get_object_list这样的数据?下面是一段有问题的代码:

#Object class
Class Entry(object)
    name = ''


#Resource class
class EntryResource(Resource):
    name = fields.CharField(attribute = 'name')

    class Meta:
        resource_name = 'entry'
        object_class = Entry
        include_resource_uri = False 
        authentication = Authentication()
        authorization = Authorization()
        serializer = Serializer()

    def override_urls(self):
        return [url(r"^(?P<resource_name>%s)/(?P<p1>[\d]{4})/(?P<p2>[\d]{4})%s$" % (self._meta.resource_name, trailing_slash()), self.wrap_view('dispatch_data'),name='api_dispatch_data'),]

    def dispatch_data(self, request, **kwargs):
         p1 = kwargs['p1'] #params can be retrieved here
         p1 = kwargs['p2']
         info = Entry()
         info.name = p1 #just example
         response = {1:info}
         return info.values() 
         #Above results in ERROR, it will say Entry object has no attribute 'has_header' 
         #changing to self.create_response(request, info) will not serialize the fields



#urls.py
api = Api(api_name='v1')
api.register(EntryResource())

urlpatterns = patterns('',
    url(r'^api/', include(api.urls)),
)
#对象类
类条目(对象)
名称=“”
#资源类
类入口资源(资源):
name=fields.CharField(属性='name')
类元:
资源名称='entry'
对象\类=条目
include\u resource\u uri=False
身份验证=身份验证()
授权=授权()
序列化程序=序列化程序()
def覆盖URL(自身):
返回[url(r”^(?P%s)/(?P[\d]{4})/(?P[\d]{4})%s$”%(self.\u meta.resource\u name,trailing\u slash()),self.wrap\u视图('dispatch\u data'),name='api\u dispatch\u data'),]
def调度_数据(自身、请求、**kwargs):
p1=kwargs['p1']#可在此处检索参数
p1=kwargs['p2']
信息=条目()
info.name=p1#举个例子
响应={1:info}
返回信息值()
#上面的结果是错误的,它会说条目对象没有“has_header”属性
#更改为self.create\u响应(请求、信息)将不会序列化字段
#url.py
api=api(api_name='v1')
api.register(EntryResource())
urlpatterns=模式(“”,
url(r“^api/”,包括(api.url)),
)
我想Tastypie已经提供了您需要的所有信息

基本上,您应该实现负责返回对象(和/或创建、删除等,如果需要的话)的方法。您不需要触摸“dispatch()”,除非您需要自定义它的功能

这取决于您的需求,但如果您希望资源的行为与具有obj_get和obj_get_list的情况类似,则需要实现这两个。我提到的例子很好,应该会让你继续