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