(新鮮なプロジェクト)商品リストに次を達成するために、ビューの06.ジャンゴ

商品のリストを返すために、ジャンゴJSON形式の元の使用を見ます

目的は、RESTfulなの背面に良好なコントラストを行い、ジャンゴの基礎のいくつかを検討することです

goods.views_base.py

インポートからのビューをdjango.views.generic.base 
リストビューから#django.views.genericインポート

goods.modelsインポート雑貨から


クラスGoodsListView(ビュー):
DEF GET(セルフ、要求):
「」 "
ジャンゴの製品リストビューページを達成
:PARAM要求:
:リターン:
"" "
json_list = []
グッズ= Goods.objects.all()[10]

方法:手動1つのdictに割り当て
#インポートJSON
のHttpResponse django.utils.httpwrappersから#インポート
こだわり#財:
#json_dict} = {
#1 json_dict [ "名前"] = good.name
#json_dict [ "カテゴリ"] = good.category.name
Json_dict#[ "market_price"] = good.market_price
## json_dict [ "ADD_TIMEは"] = good.add_time
## A datetime.datetimeのADD_TIMEはここにある()JSONのシリアライズはのImageFieldをサポートしていないことに加えて、それらをサポートしていません、オブジェクト
json_list.append位(json_dict)
リターンのHttpResponse(json.dumps(json_list)、CONTENT_TYPE =「アプリケーション/ JSON」)

第二の方法:model_to_dictワンタイム鍵を使用して、同様に、オブジェクトディクショナリの値を返し、JSONや画像をサポートしていません日時のシリアライゼーション
#インポートJSON
のHttpResponse django.utils.httpwrappersから#インポート
django.forms.models model_to_dictから#インポート
:#製品でこだわり
#= good_dict model_to_dict(グッド)
#のjson_list.append(good_dict)
HttpResponse#(json.dumps(json_list)、CONTENT_TYPE =「ファイルアプリケーション/ JSONに」)を返します

#3つの方法を:ジャンゴツールを使用すると、シリアライザシーケンス来る
#シリアル化(フォーマット、クエリセット、**オプション) 複数のオブジェクトを直接することができ操作、
インポートJSON
django.coreインポートシリアライザから
のHttpResponse django.utils.httpwrappersインポート、jsonResponseから
json_data = serializers.serialize(「JSON」、グッズ)#json_data、この場合は、JSON形式のリストであり、各要素は、オブジェクトのカプセル化です辞書に、目的の達成するためにコードの可視行
json_data = json.loads(json_data)
を返すjsonResponse(json_data、安全な= False)が#安全なデフォルトは、デフォルトの直列化辞書形式である、真のですが、今はシーケンスに必要リストの形式

上記の3つの方法がジャンゴJSON文字列を運ぶリターンを達成するために使用されている、我々は返された結果から、いくつかの問題を見ることができ、以下を参照してください

 

 

だから、理由は不便なあらゆる種類のJSONの直接リターンのため、我々は、RESTfulなを使用する必要があります 

 

 

 

 

-----以上---- 

おすすめ

転載: www.cnblogs.com/jiangzongyou/p/12083427.html