/ / VIEWがシリアル化されたデータを返すようにするにはどうすればよいですか? --django、tastypie

VIEWがシリアル化されたデータを返すようにする方法は? -ジャンゴ、tastypie

次の例では、次のようなものを渡すことができるように、URLが上書きされています。 http://localhost:8000/api/v1/entry/1234/1233/?format=json、これを行うと、パラメータがWRAP VIEWに渡されます。self.create_response(request、data)を実行すると、ブラウザには次のようなものしか表示されません。

0x2e27a50のapi.Entryオブジェクト

ブラウザでは、フィールドはシリアル化されません。注:この段階ではModelResourceは必要ありません。カスタムビューdispatch_dataを作成して、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)),
)

回答:

回答№1は0

私はおいしいと思います 非ORMデータソースでのTastypieの使用 あなたが必要とするすべての情報を持っています。

基本的にはメソッドを実装する必要がありますオブジェクトを返す(および/または必要に応じて作成、削除など)責任があります。何をするかをカスタマイズする必要がない限り、「dispatch()」をタッチする必要はありません。

これはニーズによって異なりますが、リソースにobj_getとobj_get_listがあるかのように動作させたい場合は、2つを実装する必要があります。私が言及した例は非常に優れており、あなたを動かすはずです...