配送問題の開発フレームワークのバージョン

配送問題の開発フレームワークのバージョン

まず、パラメータ渡しモードを介して取得します

1.カスタムクラスの受信パラメータ
class ParamVersion(object):
    def determine_version(self, request, *args, **kwargs):
        version = request.query_params.get('version')
        return version
        
class UsersView(APIView):
    versioning_class = ParamVersion
    # 注意:这里接收参数的类是一个,所以class为单数,后边的类只能有一个
    def get(self, request, *args, **kwargs):
        print(request.version)
        # 通过参数类返回的version信息直接封装在request中,可以通过request.version来获取
        return Response("详情页面")
2.フレームワークパッケージのコンポーネントは、達成するために
  • それはクラスQueryParameterVersioningをインポートする必要が受け取ったビューファイルにパラメータを設定します

      from rest_framework.versioning import QueryParameterVersioning
      class UsersView(API):
          versioning_class = QueryParameterVersioning
          def get(self, request, *args, **kwargs):
              print(request.version)
              return Response("详情页面")
  • settings.pyファイルで提出された情報を解放するために設定してください

      REST_FRAMEWORK = [
          'DEFAULT_VERSION': 'V1',
          # 当开发者不传递参数时默认的版本号
          'ALLOWED_VERSIONS': ['V1', 'V2', 'V3'],
          # 整个开发过程中允许使用的版本号
          'VERSION_PARAM': 'version'
          # 当传递版本信息时,版本值对应的key值,即 ?version=V1
      ]

第二に、バージョン情報がURLに書き込まれます

このアプローチは、クラスURLPathVersioningで使用する必要があります

  • URLルーティングの割り当て

      urlpatterns = [
          path('users/<slug: version>/', views.UsersView.as_view()),
          注意:2.0版本以后再传递的变量如果是str用到的是slug
      ]
  • セットビュークラス

      from rest_framework.versioning import URLPathVersioning
      class UsersView(APIView):
          versioning_class = URLPathVersioning
          def get(self, request, *args, **kwargs):
              print(request.version)
              return Response("详情页面")
  • そして、グローバル設定は、情報が同じで、あるバージョンに渡されるデフォルトのバージョン番号、許可されたバージョンのリスト、バージョンキー

パスに三に、Django 2.0のurl()()を発行

ダニエルのhEPOの2018年5月2日DJANGO、のWeb開発
Djangoの2.0紹介大幅にパラメータをキャプチャする方法を簡素化するURLを定義するための新しい方法。

Djangoの以前のバージョンでは、()メソッドのURLを使用すると、URLのパラメータをキャプチャするキャプチャという名前のグループと、正規表現を渡す必要があります。

URL(R '^記事/(?P [0-9] +)/ $ ' 、post_detail_view)
ジャンゴ2.0で、あなたがURLパラメータをキャプチャおよびルーティングする変換器を使用するパス()メソッド。

パス( '記事/ / 'Post_detail_view)
パス()は常に完全なパスと一致し、パス('アカウント/ログイン/は ') URLと等価です(' ^アカウント/ログイン/ $「)。

山カッコ( )ビューに渡されたURLパラメータのキャプチャの部分で。変換部指定されたパスの前にコロン(INT)の後ろにパラメータを定義するタイトル結腸部分(post_idの)。

ルート切り替えスイッチは読みやすくするために、だけでなく、新機能をもたらしません:パスコンバータは、適切な型変換パラメータ前のビューにパラメータを渡すことができます。

ジャンゴの以前のバージョンでは表示のみ、あなたは以下のコードを記述する必要があることを手段に渡された文字列にマッチ:

url(r'^posts/(?P<post_id>[0-9]+)/$', post_detail_view)

def post_detail_view(request, post_id):
    post_id = int(post_id)
...

Djangoの2.0を起動するには、単純に次のコードを記述することができます。

path('posts/<int:post_id>')

def post_detail_view(request, post_id):
...

Djangoの2.0は、5つ付属しています内蔵の翻訳:

  • STR
    null以外の文字列に一致するが、パス区切り文字「/」例外。コンバーター式、またはデフォルト設定が含まれていない場合。
    例: '!Best_product_ever -123.html'
    の文字列(strの)を返します。
    同等の正規表現:[^ /] +
  • intが
    ゼロまたは任意の正の整数にマッチします。
    例: '1234'
    整数(INT)を返します。
    同等の正規表現:[0-9] +

  • スラグ
    のASCII文字または数字の任意の文字列を、ハイフンとアンダースコア文字が一致します。
    文字列(STR)を返します。
    例:「建物-あなた-1st-ジャンゴ・サイトの
    同等の正規表現:[ - -ZA-Z0-9 _] +

  • UUID
    マッチングはUUIDをフォーマットされました。同じページにマッピングされた複数のURLを防止するためには、ダッシュを含める必要があり、小文字でなければなりません。
    戻り値UUIDインスタンス(uuid.UUID)。
    例: '075194d3-6885-417e-a8a8-6c931e272f00'
    同等の正規表現:[0-9A-F] {8 } - [0-9A-F] {4} - [0-9A-F] {4 } - [0-9A-F] { 4} - [0-9A-F] {12}

  • パスは、
    パス区切り文字を含む、任意のnull以外の文字列にマッチします「/」。これにより、同じURLパスとSTRの一部だけではなく、完全なURLパスを一致させることができます。
    例:「/パス/に/ファイル 」
    を返す文字列(文字列)。
    同等の正規表現:「+」

事前に定義されたパスコンバータは、ニーズに適していない場合、あなたは、このような直接モデルインスタンスに変換し、URLパラメータとしていくつかのトリックを行うことができますカスタムパスコンバータを登録することができます。また、あなたはまだ(re_pathを使用することができます))(代わりに、古き良き正規表現パスの使用されています。

from django.urls import re_path

re_path(r'posts/(?P<post_id>[0-9]+)/$', post_detail_view)

ちなみに、古いURL()関数は、すべてのURLの定義を変更する必要は今、まだ利用できません。

新しいパス()メソッドは、大幅にURLのハンドリングを容易にします。私はより多くの10年以上ジャンゴと協力して、まだ名前の正規表現のキャプチャグループを定義する方法を覚えていないことができます。また、手動型変換は、DRY原則に反する行います。

おすすめ

転載: www.cnblogs.com/ddzc/p/12132375.html