WebフロントエンドのVue + Djangoの残りのフレームワークフレーム新鮮な電気プロバイダプロジェクトの戦闘ビデオチュートリアル
残りのフレームワークフレーム新鮮な電気プロバイダプロジェクトの戦闘ビデオチュートリアルを学ぶためのWebフロントエンドのVue +ジャンゴ
準備1.drf
公式文書の1.django-残りのフレームワーク
https://www.django-rest-framework.org/
#直接Baiduのが見つかりました。djangorestframework 公式サイトがオープンされていません
2.インストールの依存関係
図に示すように、 Djangoは依存モジュールをrestframework、及びcoreapiジャンゴ・ガーディアンに加えて、前に設置されています。
ターミナルを開き、インストールコマンド
ピップジャンゴ・後見人をインストール
coreapiをインストールするPIP
3. rest_frameworkレジスタの設定
デバッグAPI 4.管理がurls.pyに使用されるURLの設定
django.urlsインポートパスから
django.views.staticインポートからサーブ
MxShop.settingsインポートMEDIA_ROOTから
django.urlsには、インポートから
輸入xadmin
rest_framework.documentationインポートinclude_docs_urlsから
goods.views輸入GoodsListViewから
urlpatterns = [
パス( 'xadmin /'、xadmin.site.urls)
経路( 'メディア/ <パス:パス>' { 'DOCUMENT_ROOT':MEDIA_ROOTを}、サーブ)
パス( 'ueditor /'() 'DjangoUeditor.urls' を含みます)、
パス( 'ドキュメント/'、include_docs_urls (タイトル= " ムーXuesheng新鮮"))、
経路( 'API-AUTH /'( 'rest_framework.urls')を含みます)
パス( '財/'、GoodsListView.as_view()、名前= '商品リスト')、
]
2.シリアライズ商品データ
では、商品の下に新しいserializers.pyファイルディレクトリ
rest_frameworkインポートシリアライザから
goods.models者からの製品、GoodsCategoryをインポート
クラスGoodsSerializer(serializers.Serializer):#シリアライザの実施形態は、シリアライズ
名前= serializers.CharField(必要= Trueの場合、MAX_LENGTH = 100)
click_num = serializers.IntegerField(デフォルト= 0)
goods_front_image = serializers.ImageField()
#用ポスト
デフ(自己、validated_data)を作成します。
Goods.objects.createを返す(** validated_data)
クラスCategoryModelSerializer(serializers.ModelSerializer):
クラスメタ:
モデル= GoodsCategory
フィールド=「__ __全て」#すべてのフィールドがあるシリアル化されたテーブル全体
クラスGoodsModelSerializer(serializers.ModelSerializer):#ModelSerializer 方式序列化
カテゴリ= CategoryModelSerializer()#埋め込む外部キー情報
クラスメタ:
モデル=製品
#フィールド=「__ __全て」 # すべてのフィールドがあるシリアル化されたテーブル全体
フィールド=(「名前」、「 goods_front_image」、「カテゴリ」)# 特定のフィールドの特定のシーケンス
3.ビューパッケージ
1. APIView +対応商品リストに戻る次へビュー(ネイティブジャンゴのCBV最重要指名手配の文言)を実装
中のviews.py
.serializersからGoodsSerializer、GoodsModelSerializerをインポート
rest_framework.views輸入APIViewから
rest_framework.response輸入レスポンスから
.models者からの製品をインポートします
rest_frameworkのインポートステータスから
クラスGoodsListView1(APIView):
「」」
すべての商品を一覧表示し、使用シリアライザ
「」」
デフ(自己、要求、フォーマット=なし)を取得:
商品= Goods.objects.all()[10]
goods_serializer = GoodsSerializer(財、多くの=真)
レスポンス(goods_serializer.data)を返します
デフポスト(自己、要求、フォーマット=なし):
シリアライザ= GoodsSerializer(データ= request.data)
)(serializer.is_valid場合:
serializer.save()
レスポンスを返す(serializer.data、ステータス= status.HTTP_201_CREATED)
返すレスポンス(serializer.errors、ステータス= status.HTTP_400_BAD_REQUEST)
クラスGoodsListView2(APIView):
「」」
すべての商品を一覧表示し、使用ModelSerializer
「」」
デフ(自己、要求、フォーマット=なし)を取得:
商品= Goods.objects.all()[10]
goods_serializer = GoodsModelSerializer(財、多くの=真)
レスポンス(goods_serializer.data)を返します
中のurls.py
django.contribインポート管理者から
django.urlsインポートパスから
django.views.staticインポートからサーブ
MxShop.settingsインポートMEDIA_ROOTから
輸入xadmin
goods.viewsからGoodsListView1、GoodsListView2をインポート
urlpatterns = [
パス( '管理/'、admin.site.urls)、
パス( 'xadmin /'、xadmin.site.urls)
経路( 'メディア/ <パス:パス>' { 'DOCUMENT_ROOT':MEDIA_ROOTを}、サーブ)
パス( 'ueditor /'() 'DjangoUeditor.urls' を含みます)、
パス( '財/'、GoodsListView1.as_view()、名前= '商品リスト')、
パス( 'goods2 /'、GoodsListView2.as_view()、NAME = '商品-LIST2')
]
2.ミックスイン+商品リストに戻る次へを達成するための汎用ビュー
.serializersからGoodsSerializerをインポート
.models者からの製品をインポートします
rest_frameworkインポートミックスインから
rest_framework輸入ジェネリックから
クラスGoodsListView(mixins.ListModelMixin、generics.GenericAPIView):
「」」
商品リストに戻る次へ
「」」
クエリセット= Goods.objects.get_queryset()ORDER_BY( 'ID')。[10]
serializer_class = GoodsSerializer
デフのget(自己、要求、* argsを、** kwargsから):
リターンself.list(要求、* argsを、** kwargsから)
商品リストに戻る次へを達成する3. generics.ListAPIViewビュー
.serializersからGoodsSerializerをインポート
.models者からの製品をインポートします
rest_framework輸入ジェネリックから
クラスGoodsListView(generics.ListAPIView):
「」」
商品リストに戻る次へ
「」」
クエリセット= Goods.objects.get_queryset()。ORDER_BY( 'ID')
serializer_class = GoodsSerializer
4.ページング
1. [グローバル]タブ:、、設定内のすべてのページのリストを、コードを追加します。10ページあたりのページネーションとなり、重大な制限があることは明らかです
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination'
'PAGE_SIZE':10、
}
2.ローカルカスタムタブ:ビュー内のカスタムコード
rest_framework.paginationインポートPageNumberPaginationから
クラスGoodsPagination(PageNumberPagination):
PAGE_SIZE = 10
page_size_query_param = 'PAGE_SIZE'
page_query_param = 'P'
MAX_PAGE_SIZE = 100
クラスGoodsListView(generics.ListAPIView):
「」」
商品リストに戻る次へ
「」」
クエリセット= Goods.objects.get_queryset()。ORDER_BY( 'ID')
serializer_class = GoodsSerializer
pagination_class = GoodsPagination
5.viewsets
のビュー1.
rest_frameworkインポートビューセットから
クラスGoodsListViewSet(mixins.ListModelMixin、viewsets.GenericViewSet):
「」」
商品リストに戻る次へ
「」」
クエリセット= Goods.objects.get_queryset()。ORDER_BY( 'ID')
serializer_class = GoodsSerializer
pagination_class = GoodsPagination
内のURL 2.
goods.viewsからGoodsListViewSetをインポート
rest_framework.routersからdefaultrouterにインポートします
ルータ= defaultrouterに()
router.register(r'goods'、GoodsListViewSet、BASE_NAME = "物品")
urlpatterns = [パス( ''、が挙げられる(router.urls))]