21日目drfの紹介とアプリケーションのインストール

21日目drfの紹介とアプリケーションのインストール

1.DRFとは

Django RESFフレームワークは、次の機能を備えた便利なRESTAPI開発フレームワークを提供するオープンソースのDjango拡張機能です。

  • 直感的なAPIWebインターフェイス。
  • 複数の認証および権限認証方法のサポート。
  • OAuth1とOAuth2の組み込みサポート
  • 内蔵電流制限システム
  • DjangoORMまたは他のライブラリによる自動シリアル化
  • 豊富なカスタマイズレベル:関数ビュー、クラスビュー、さまざまなニーズを満たすために自動生成されたAPIへのビューコレクション
  • 拡張性、豊富なプラグイン
  • 広く使用されている豊富なドキュメント

2、Web開発モデル

1.フロントエンドの混合開発

(テンプレート言語:DTL)、多くのフロントエンドの問題に対処する

2.前端と後端が分離されている

フロントエンドはプロジェクト、バックエンドはプロジェクト、共同デバッグ

フルスタック開発

3.フロントエンド:

Webフロントエンド、モバイル端末、小さなプログラムだけでなく

  • -web:vue、react、html + css + jq
    -mobile terminal:ios(object c、swift)、Android(java、Kotlin)-小さな
    プログラム:WeChatはjs、html、cssの一部をカプセル化します

  • -現在までの開発:大きなフロントエンドコンセプト-flutter:Dart
    -uni-app:vueフレームワーク

4.バックエンドはjson形式の文字列を返すだけで済みます

3、APIインターフェース

  • 1 / books / —> json形式のデータを返す—> / books /はAPIインターフェースです
  • 2APIインターフェースを
    開く
    -Weibo - Baidu
  • 3つのAPIドキュメント(フロントエンドで表示可能)
  • 4典型的なAPIインターフェース
    -https://api.weibo.com/2/statuses/home_timeline.json

第四に、郵便配達員の使用

  • バックエンドを開いた後、postmanを使用してインターフェース(APIインターフェース)をテストします
  • postmanを使用してテストインターフェイスをエクスポートおよびインポートします(戻って自分で試してください)
  • 会社のテストプラットフォーム

5、drfのインストールと使用

  • djangorestframework:djangoアプリ、djangoでのみ使用できます
  • pip3インストールdjangorestframework
  • 使い方は簡単です。コードを参照してください
    。django:2.0.7、バージョン1も利用可能です
    。djangorestframework:3.12.1

6、CBVソースコードレビュー

# drf:APIView的源码分析

    def as_view(cls, **initkwargs):
        # 这句话执行完成返回 view闭包函数的内存地址
        view = super().as_view(**initkwargs) # 调用父类(View)的as_view
        view.cls = cls
        view.initkwargs = initkwargs
        view=csrf_exempt(view)  # 局部禁用csrf
        return view

 # 装饰器的使用方式
@csrf_exempt   ====>view=csrf_exempt(view)
def view():
    pass

# 请求来了,会执行上面返回的view()---->self.dispatch(APIView的dispatch)


# APIView的dispatch方法
def dispatch(self, request, *args, **kwargs):
	# 把原生的request,封装进新的Request对象(drf的Request)
    request = self.initialize_request(request, *args, **kwargs)
    self.request = request
    
        try:
    	# 重点(频率,认证,权限。。。)
        self.initial(request, *args, **kwargs)

        if request.method.lower() in self.http_method_names:
            handler = getattr(self, request.method.lower(),
                              self.http_method_not_allowed)
        else:
            handler = self.http_method_not_allowed
		# 这个request新的requst,是drf中Request对象
        # response是原生response
        response = handler(request, *args, **kwargs)

    except Exception as exc:
        # 全局异常
        response = self.handle_exception(exc)
	# 把原生response包装了一下
    self.response = self.finalize_response(request, response, *args, **kwargs)
    return self.response

おすすめ

転載: blog.csdn.net/A1L__/article/details/109485070