プロジェクトコースのモジュール(2)

まず、コースの詳細インターフェイス

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、インターフェース

  

第三に、見直しが頻繁に質問とインタフェースを尋ねました

 

おすすめ

転載: www.cnblogs.com/xiugeng/p/11605988.html