まず、コースの詳細インターフェイス
1、URLコースの詳細を追加
LuffyCity /コース/ urls.pyファイルの詳細はCourse_IDにを運ぶ、コースのURLを追加します。
django.urls インポートパスを から .views インポートCategoryView、CourseView、CourseDetailViewを urlpatterns = [ パス(' カテゴリ'、CategoryView.as_view())、 #のコースカテゴリの パス(' 一覧'、CourseView.as_view())、 #コースの閲覧 パス(' 詳細/ <int型:PK> '、CourseDetailView.as_view()) #は、コース上の情報を表示し、Course_IDにを運びます ]
2、番組詳細シリアライザを追加
次LuffyCity中/コース/ serializers.pyファイルを追加します。
クラスCourseDetailSerializer(serializers.ModelSerializer): レベル = serializers.CharField(出典= " course.get_level_display ") #の難易 study_num = serializers.IntegerField(出典= " course.study_num ") #を学習する人の数 recommend_courses = serializers.SerializerMethodField() #は、カリキュラムの推奨 教師= serializers.SerializerMethodFieldを() #もちろん教師 price_policy = serializers.SerializerMethodField() #価格戦略 course_outline = serializers.SerializerMethodField() #のシラバス DEFのget_recommend_courses(セルフ、OBJ): #取得すべての推奨コース、主に二つのフィールドを取得するために上記ID、タイトル挙げ リターン [{ 「上記IDに言及」:course.idを、「タイトル」:course.titleは} ためのコースでobj.recommend_courses .ALL()] DEFのget_teachers(セルフ、OBJ): #は、名前とカリキュラム教師IDが取得 リターン [{ " ID ":teacher.id、" 名前" teacher.name:} のために教師に)(obj.teachers.all] DEFのget_price_policy(セルフ、OBJ): #は価格戦略を取得し、価格戦略期間(中国語表示)を取得し、価格情報を 返します[ { " 上記のIDを述べた" :price.id、 " valid_price_displayを":price.get_valid_period_display()、 #の価格サイクルは'_Display'を追加し、デジタル表示の中国表示されません " 価格。" :price.price } のための価格でobj.course.price_policy.all()] DEF get_course_outline(セルフ、OBJ): #はシラバス、シラバスやコースの詳細テーブルには外部キー関係結合され得る リターン[ { " ID " :outline.id、 " タイトル" :outline.title、 " 内容" :outline.content } についての概要で obj.course_outline.all()。ORDER_BY(「オーダー」)] #は、すべてのフレームワークは、順番を並べ替えるために取得します クラスメタ: モデル = models.CourseDetail フィールド = [ " ID "、" 時間"、" 概要"、" レベル"、" study_num "、" recommend_courses "、" 教師" 、 " price_policy "、" course_outline "、]
3、プログラムの詳細ビューを追加
のLuffyCity /コース/ views.pyに以下を追加します。
.serializers インポート CategorySerializer、CourseSerializer、CourseDetailSerializer 位シリアライザを導入しました クラスCourseDetailView(APIView): DEF (セルフ、リクエスト、PK)がGET: #はPKコースに基づいて、オブジェクトの詳細を取得 course_detail_obj = models.CourseDetail.objects.filter(course__id = PK)1次回() のIF ないcourse_detail_obj: 返すレスポンスを({ " コード":1001と、" エラー":" コースの詳細要求が存在しない" }) #のシリアル化プログラムの詳細 ser_obj = CourseDetailSerializer(course_detail_obj) #1 戻る 戻り)(ser_obj.dataをレスポンス
効果にアクセスするための4、インターフェース
次のように管理コンポーネントの詳細データを使用してコースを追加し、そのデータにアクセスするために郵便配達員コールインタフェースを使用し、効果は次のとおりです。
第二に、カリキュラム区間インタフェース
1、URLコースの章を追加
LuffyCity /コース/ urls.pyファイル、コースの章のURLを追加します。
django.urls インポートパス から .views インポートCategoryView、CourseView、CourseDetailView、CourseChapterViewを urlpatterns = [ パス(' カテゴリ'、CategoryView.as_view())、 #のコースカテゴリの パス(' 一覧'、CourseView.as_view())、 #コースの閲覧 パス(' 詳細/ <int型:PK> '、CourseDetailView.as_view()) 、 #コースの詳細を表示するには、Course_IDに運ぶの パスを(' チャプター/ <INT:PK> '、CourseChapterView.as_view()) #のコースセクション ]
2、コースのセクション・シリアライザ
次LuffyCity中/コース/ serializers.pyファイルを追加します。
クラスCourseChapterSeriallizer(serializers.ModelSerializer): 切片 = serializers.SerializerMethodField() デフget_sections(自己、OBJ): リターン[ { " ID " :section.id、 " タイトル" :section.title、 " free_trail " :section.free_trail } のためのセクションで obj.course_sections.all()。ORDER_BY(" section_order " ]) クラスメタ: モデル = models.CourseChapter フィールド = [ " ID "、" タイトル"、" セクション" ]
3、断面図のコース
クラスCourseChapterView(APIView): DEF (セルフ、要求、PK)を得る: #[ "章":{クラス、2クラス}] クエリセット= models.CourseChapter.objects.filter(Course_IDに= PK).ALL() .order_by(" 章" ) #シリアライズされたオブジェクトのセクション ser_obj = CourseChapterSeriallizer(クエリセットは、多くの= TRUE) #のリターン を返すレスポンス(ser_obj.dataを)
効果にアクセスするための4、インターフェース
第三に、見直しが頻繁に質問とインタフェースを尋ねました