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