独自のインタフェースのマニュアルを開発しdjangorestframework

2週間勉強した後、最終的に働きました。ブログをたくさん読んで前に数を増やすためにデータベースを作成することですが、私は望んでいないものを。だから、パラメータの値を大きくするためにデータベースを使用していません。

背景:Javaの会社のスタッフが闊歩独自のインターフェイスを開発しているため、リーダーシップが言われていないため、Pythonはそれが闊歩を開発したインタフェースすることができるはずですか?だから、3ヶ月の新入社員にこのタスクを入れ、

まず、環境を設定します。

ソフトウェアバージョンは、独自のバージョンにも多くのことを試みたが、最終的には会社のためのバージョンを取得します。Pythonのバージョンは2.7.12です。ここでは、おそらくあなたがインストールするパッケージです。インストールをご注文ください。

pytz == 2019.1
ジャンゴ== 1.11.22

== 3.16.0のsimplejson
djangorestframeworkの== 3.9.4

MarkupSafe == 1.1.1
Jinja2のの== 2.10.1

0.0.4 == coreschema
itypes 1.1.0 ==
uritemplate == 3.0.0

setuptools_scm == 3.3.2
setuptoolsの== 40.8.0
pytest_runner == 5.0
認証取得== 2019年6月16日
urllib3の== 1.25.2
chrdetの== 3.0.3
要求== 2.22.0

coreapi == 2.3.3
OpenAPIのコーデック== 1.3.1
ジャンゴ・静止闊歩する== 2.2.0

第二に、公共swagger_schema.pyを作成

- * -コーディング:UTF-8 - * - 

輸入YAML
 から urlparse 輸入urljoin
 から rest_framework.compat 輸入coreapi
 から rest_framework.schemas.generatorsはインポートis_custom_actionを
 から rest_framework.schemas.inspectors インポートAutoSchema 

クラスCustomViewSchema(AutoSchema):
     DEF 自己get_linkを( 、パス、方法、BASE_URL):

        もしはhasattr(self.view、' アクション' ):
            アクション = self.view.action
         
            アクションは = '' 

        の場合 ではないis_custom_action(アクション):
             返すスーパー(CustomViewSchema、自己).get_link(パス、メソッド、BASE_URL)

        フィールド = self.get_path_fields(パス、メソッド)

        yaml_doc = なし
         の場合 self.view  self.view。__doc__ 試す
                yaml_doc = yaml.load(self.view。__doc__ を除い
                yaml_doc = なし

        場合 yaml_doc  "DESC '  yaml_doc:
            DESC = yaml_doc.get(' DESC ' '' 
            _method_desc = DESC 
            のparams = yaml_doc.get(' パラメータ'[])
             のための I のparams:
                _name = i.get(' 名前' 
                _DESC = i.get(' DESC ' 
                _required = i.get(' 必須'、TRUE)
                _type = i.get(' タイプ' 
                _location = i.get(' 位置'' クエリ' 
                、F = coreapi.Field( = _name、
                    位置 = _location、
                    必要 = _required、
                    説明 = _DESC、
                    タイプ = _type 
                fields.append(F)
        
            _method_desc = self.view。__doc__  場合 self.view  self.view。__doc__  そう '' 
            フィールド + = self.get_serializer_fields(パス、メソッド)

        フィールド + = self.get_pagination_fields(パス、メソッド)
        フィールド + = self.get_filter_fields(パス、メソッド)

        TE = []
         のためのフィールドフィールド:
             もし field.location  クエリ 
                te.append(field.location)

        もしフィールド任意(TE):
            エンコード = self.get_encoding(パス、方法)
         
            エンコーディング = なし

        場合 BASE_URL  path.startswith(' / ' ):
            パス =パス[1 :] 

        戻りcoreapi.Link(
            URL = urljoin(BASE_URL、パス)、
            符号化 = エンコーディング、
            アクション = method.lowerを()、
            フィールド =フィールド、 
            説明= _method_desc 

 

三、彼らのDjangoプロジェクトの変更ビューでAPP

common.swagger_schema インポートCustomViewSchema
 から rest_framework.decorators インポートapi_view、スキーマ

@api_view([ ' GET ' ])#POSTメソッドを変更することができます
@schema(CustomViewSchema())
DEFのGetFiles(要求):
     "" " 
    DESC:ゲット道路
    パラメータ:
    -名前:SPATHの
      DESC:リモートアドレス、     
      タイプ:文字列#コントロールは、あなたの入力を入力し、このような文字列、数値、その他など
      の必要な:真#制御パラメータは必須です
      場所:クエリ位ように形成してするように変更することができます

    -名前:IP 
      DESC:リモートIP 
      タイプ:文字列
      必要:trueに
      LOCATION:クエリ

    -名:ポート
      DESC:远程端口、
      タイプ:文字列
      必須:○ 
      場所:クエリ

    -名:ユーザー名
      DESC:远程IP的用户
      タイプ:文字列
      必須:○ 
      場所:クエリ

    -名:パスワード
      DESC:远程IP的密码
      タイプ:文字列
      必要:真
      場所:クエリ

    ""」
    SPATH = request.GET.get(" SPATH "" " 
    、IP = request.GET.get(" IP """ 
    ポート= request.GET.get(" ポート"、22 
    、ユーザ名 = request.GET.get(" ユーザ名""" 
    パスワード = request.GET.get(" パスワード""" のリターンはHttpResponse( '取得')

 

四、プロジェクトのルートディレクトリの下に設定変更

1、INSTALLED_APPSの増加 

rest_framework_swagger和rest_framework


五、URLのルートディレクトリの下にプロジェクトを変更
rest_framework.schemas インポートget_schema_viewを
 から rest_framework_swagger.renderers インポートSwaggerUIRenderer、OpenAPIRenderer 
schema_view = get_schema_view(タイトル= ' jobappのAPI '、= renderer_classes [OpenAPIRenderer、SwaggerUIRenderer])

urlpatterns = [ 
    URL(R ' ^管理/ ' 、admin.site.urlsを)、
    URL(R ' ^ APP / '、含む(device_urls))、 这个是你自己创建的アプリケーション 
    のURL(R ' ^ API-AUTH / '、(含まれます'rest_framework.urls '名前空間= ' rest_framework ' ))、
    URL(R ' ^ API / " 、schema_view)、
]

 



このステップは、runseverインターフェイスを闊歩することができる必要があります使用してください。しかし、その会社は、プロジェクトを開始するために使用uwsgiを降りていきます。
uwsgiを使用するには、nginxのを設定する必要があります。

第六に、Pythonのmanage.pyのcollectstaticの実装はINSTALLED_APPSに設定から静的収集します。
ディレクトリcollected_staticがあります。3つのファイルがあります。ADMINのrest_frameworkの rest_framework_swagger

プロジェクトのルートディレクトリの下に設定の変更は7
= STATIC_URL '/静的/' 
STATIC_ROOT = os.path.join(BASE_DIR、 'collected_static')
STATICFILES_DIRS =(
os.path.join(BASE_DIR、 "静的")


8、ファイルuwsgi.iniの増加
スタティックマップ= /静的= /ホーム/ APPUSER / jobapp / collected_static
 











おすすめ

転載: www.cnblogs.com/qyk1995/p/11201869.html