注:まだ開発中です。
現在のバージョン: 0.0.0
ベータ版
Flask-BDA はまだ初期開発中であり、Python 3.8.6 バージョンでテストされています。
現在のロードマップと大まかなプロジェクト計画: https://trello.com/b/uu4HNPBh/flask-bda-features-roadmap
Flask-BDA は、バージョン番号の{major}.{minor}.{patch}
スキームを使用して、リリースのセマンティック バージョニングに従います。ここで、:
バージョン0.0.1
以降、少なくとも 3 つのマイナー バージョンでは非推奨が維持されます。
Tableau、Power BI、Amazon QuickSight などの他のソリューションは、素晴らしいツールではありますが、レポート作成に重点を置いていますが、必要なときにデータを編集したりプラットフォームに追加したりすることはできません。つまり、ビジネス目標を達成するには追加のソリューションやソフトウェアが必要になります。
Excel のようなソリューションは誰でもアクセスでき、必要な柔軟性をすべて提供します。それでも、データは分散しているため、チームやクライアントにとって信頼できる情報源を共有することは容易ではありません。また、Excel ドキュメントが同期されなかったり共有されたりすることも非常に多く、会社はセキュリティ リスクにさらされます。
Flask-BDA は、迅速かつ安全なフルスタック アプリケーションを 2 ~ 5 倍 (2 ~ 5 倍) 高速に配信するための制御を提供することで役立ちます。ベンダーや環境にロックインされることはありません。
Flask は、Armin Ronacher によって書かれたオープンソースの「マイクロフレームワーク」で、Python で Web アプリケーションを構築できるようにします。小規模なコア機能セットのみを出荷することで、開発者がアプリケーションに必要な追加ツールを選択できる拡張可能なベースが提供されます。
Flask はマイクロフレームワークと呼ばれていますが、小規模および大規模な Web アプリケーションの構築に適しています。 Flask は、Twilio、Pinterest、Lyft、LinkedIn、Uber などの大企業の実稼働システムで使用されています。
Flask-BDA は、次のことを可能にする既存の Flask アプリケーション構造を提供することで、より迅速な開発を支援します。
ソフトウェア開発を遅らせる退屈な部分に自動的に対処します
- すべてのデータベース接続と複雑なクエリを作成および管理します。
- ユーザーおよびロールベースのアクセス制御によるアプリケーションのセキュリティ
- すべてのアクションの自動監査
Flask-BDA は、企業があらゆるデバイスで実行できる安全なアプリケーションを迅速に開発および展開するためのツールを提供するローコード プラットフォーム (つまり、私たちが多くのコードを作成してお手伝いします) です。
ソフトウェアの構築方法を変更することで、ビジネスに合わせて進化するあらゆる規模の重要なアプリケーションを迅速に作成して展開できるようになり、時間とコストを節約できます。
開発者は、消費者向けアプリから重要な社内ビジネス システムに至るまで、あらゆる種類のアプリケーションを構築して展開できます。開発者が安全なアプリケーションを迅速かつ効率的に提供できるように設計されており、アプリは数週間、場合によっては数日で提供されます。
Flask-BDA は次のフルスタック開発を提供します。クロスプラットフォーム アプリをすぐに作成できる UI、ビジネス プロセス、カスタム ロジック、データ モデル。必要に応じて独自のカスタム コードを追加できる足場を提供します。ロックインは一度もありません。
事前に構成された開発環境を使用すると、市場投入の苦労 (およびコスト) が軽減され、展開する場所と方法を柔軟に選択できるようになります。
無料で開発者に優しい Flask-BDA は、無料で使用でき、ソースが利用可能な、開発者に優しいライセンスを持つアプリケーション開発ツールです。
Flask-BDA は商用および個人プロジェクトに完全に無料で使用できます。
ただし、ソフトウェア開発には常にコストがかかります。
- 製品を構築するには、1 人または複数のソフトウェア開発者、ビジネス アナリスト、デザイナー、プロジェクト マネージャー、およびその他のチーム メンバーに報酬を支払う必要があります。
- 製品が完成することはありません。ソフトウェアプロジェクトには常に継続的な開発が必要です。
- あなたが製品を提供するとき、競合他社はすでに新しい機能や改良された機能に取り組んでおり、あなたは先を行くか、少なくとも追いつくことができる必要があります。そうしないと、ユーザーは競合他社に移ってしまいます。
- 製品の使用を開始すると、あなたとあなたのチームは製品をさらに改善し、プロセスを改善するための新機能を考えます。
- メンテナンスの継続。ユーザーが製品を使用すると、思いもよらなかった破損方法が見つかるため、修正する必要があります。
プロジェクトの規模 | 初期費用 | 継続コスト |
---|---|---|
小規模プロジェクト (開発に 2 ~ 6 週間) | 11250ドル | $563 - $1,125 (±10%) / 月額 |
中規模プロジェクト (開発期間 2 ~ 4 か月) | 33,750ドル | 1,563 ドル - 3,375 ドル (±10%) / 月あたり |
大規模プロジェクト (6 ~ 18 か月以上の開発) | 156 250ドル | $3,375 - $15,625 (±10%) / 月額 |
プロジェクトの規模 | 初期費用 | 継続コスト |
---|---|---|
小規模プロジェクト (開発に 1 ~ 3 週間) | 3,750ドル | $188 - $375 (±10%) / 月額 |
中規模プロジェクト (開発期間 1 ~ 3 か月) | 11250ドル | $375 - $1,125 (±10%) / 月額 |
大規模プロジェクト (開発期間 2 ~ 6 か月以上) | $52084 | $1,125 - $5,208 (±10%) / 月額 |
Flask-BDA を使用すると、標準化された開発パターンと実証済みのテクノロジーを使用するため、 「通常の開発」の柔軟性を失うことはありません。
Flask-BDA は多くのオープンソース テクノロジを使用し、既存のテクノロジ スタックを活用するため、同じテクノロジを使用する他の開発者を簡単に見つけることができます。その結果、会社の収益の多さやビジネスの状況に関係なく、高額なライセンス料や環境コストを支払う必要はありません。
事前に構成された開発環境を数分で素早く簡単に開始できます。
複雑な設定は必要ありません。 Python (3.8.6 を推奨) のみが必要です。
構成を更新します: データベース接続とアプリケーション設定。
独自のモジュールとデータ構造 (データ モデル) を作成して、さまざまなデータベースを使用できるようにします。
自動生成された完全に機能するもの:
Admin
ページとMobile
ページ- Swagger フロントエンドを使用した
REST APIs
- GraphiQL フロントエンドを備えた
GraphQL API
モジュールごとに簡単に管理できます。
特定のニーズに合わせてページを構成し、チームやクライアントと簡単に共有できます。
他のモジュールに影響を与えないように、独立したモジュールに独自のカスタム コードを記述します。
さまざまなプロジェクト間でモジュールを簡単に統合します。
同じコードベースを使用して以下にデプロイします。
- デスクトップ
- ウェブ
- 携帯
環境には次のものが含まれます。
- ドッカー
- AWSサーバーレス
- デジタルオーシャン
- ヒーローク
- 共有ホスティング。
pip
がインストールされていることを確認してください (pip は最新バージョンの Python に付属しているため、すでにインストールされているはずです)。インストールされていない場合は、ここからインストールしてください: https://pip.pypa.io/en/stable/installing/python -m pip --version
注:このドキュメントでは、
pip3
pip
として実行していることを前提としています。そのため、すべての命令はpip
で記述されています。ターミナルからpip
呼び出したときにpip3
を実行したい場合は、pip
からpip3
へのシンボリックリンクを作成できます。
pip install --upgrade pip
実行するには、管理者として「cmd」を実行する必要がある場合があります。sudo
としてコマンドを実行します。例: sudo pip install --upgrade pip
nano ~ /.bash_profile
ファイルに次の内容を貼り付けます。
alias pip= ' pip3 '
alias python= ' python3 '
注:私のディストリビューションには Python 2.7 がプレインストールされているため、MacOS では Python 2.7 を削除する必要がある場合があります。これを実現するには、次のような方法が非常に役に立ちました。
sudo rm -rf /Library/Frameworks/Python.framework/Versions/2.7
sudo rm -rf " /Applications/Python 2.7 "
ls -l /usr/local/bin | grep ' ../Library/Frameworks/Python.framework/Versions/2.7 '
次に、次のコマンドを実行してすべてのリンクを削除します。
cd /usr/local/bin/
ls -l /usr/local/bin | grep ' ../Library/Frameworks/Python.framework/Versions/2.7 ' | awk ' {print $9} ' | tr -d @ | xargs rm
Python と
pip
インストールしたら、Flask-BDA コマンド ライン関数が正しく実行されるように依存関係をインストールする必要があります。
pip install click
グローバルにインストールする必要があるその他の依存関係 (ただし、プロジェクトの作成時に自動的に実行される必要があります) には次のものがあります。
pip install virtualenv
pip install flaskwebgui
pip install pyinstaller
Flask-BDA を使用して最初のプロジェクトの構築を開始するには、以下の簡単な手順に従って、事前に構成された独自の開発環境を作成し、数分で実行できます。
このクイックスタートでは、
"My Awesome Project"
というプロジェクトを作成します。ただし、プロジェクトには任意の名前を付けることができます。
create_project.py
Python ファイルがダウンロードされ、プロジェクトを開始するために実行されます。"My Awesome Project"
。 curl -L https://raw.githubusercontent.com/RyanJulyan/Flask-BDA/main/create_project_git.py --ssl-no-revok -o create_project_git.py
python create_project_git.py --project= " My Awesome Project "
create_project.py
Python ファイルがダウンロードされ、プロジェクトを開始するために実行されます。"My Awesome Project"
。 curl -L https://raw.githubusercontent.com/RyanJulyan/Flask-BDA/main/create_project_git.py --ssl-no-revok -o create_project_git.py
python create_project_git.py --project= " My Awesome Project "
注:有効なプロジェクト名を入力しなかった場合は、入力するように求めるプロンプトが表示されます。
- プロンプトが表示されたら、プロジェクト名を入力します。例:
- エラーを防ぐために、プロジェクト名を引用符で囲んでください (例:
"My Awesome Project"
。
Invalid Project Name !
Please enter a valid project name :
"My Awesome Project"
注:これにより、ファイル「create_project_git.py」と同じパスにフォルダーが作成されることがわかります。このフォルダーは小文字になり、すべての特殊文字が削除され、スペースがアンダースコアに置き換えられます。例:
my_awesome_project
注:開発中、別のブランチまたはリポジトリを完全に使用したい場合があります。これは、テストやコアの Flask-BDA プロジェクトから離脱した場合に役立ちます。
- 新しいプロジェクトを作成するときに、
Owner
、Repo
、およびBranch
指定できます。
curl - L https : // raw . githubusercontent . com / RyanJulyan / Flask - BDA / RyanJulyan - Dev / create_project_git . py - - ssl - no - revok - o create_project_git . py
python create_project_git . py - - project = "My Awesome Project" - - owner = "RyanJulyan" - - repo = "Flask-BDA" - - branch = "RyanJulyan-Dev" - - create_venv = True
注:すべての接続タイプについてはまだテスト中です。
Flask-BDA ではデータベース接続が迅速かつ簡単です。 1 つまたは複数のデータベースを持つことができ、異なるテナントは独自のデータベース接続と独自のデータベース タイプ (SQLite、MySQL、SQL Server、PostgreSQL) を持つことができます。
デフォルトでは、Flask-BDA には SQLite データベースがセットアップされています。これは実際に、SQLite をセットアップして実行するために追加のインフラストラクチャが必要ないため、SQLite を迅速かつ簡単に選択できるからです。
デフォルトのデータベースを変更するには:
flaskbda
)、ユーザー ( flaskbda_user
)、およびパスワード ( password
) を作成します。config.py
を開きますDATABASE_ENGINE
をコメント アウトし、mysql DATABASE_ENGINE
にコメントを追加します。DATABASE_NAME
をコメント アウトし、mysql でコメントします。DATABASE_HOST
DATABASE_PORT
DATABASE_USERNAME
DATABASE_PASSWORD
DATABASE_NAME
SQLALCHEMY_DATABASE_URI
をコメント アウトし、mysql SQLALCHEMY_DATABASE_URI
をコメント化します。 ##########
# SQLite #
##########
# DATABASE_ENGINE = 'sqlite:///'
# DATABASE_NAME = os.path.join(BASE_DIR, 'databases/sqlite/default.db')
# SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_NAME
#########
# MySQL #
#########
DATABASE_ENGINE = 'mysql://'
DATABASE_HOST = ''
DATABASE_PORT = '1433'
DATABASE_USERNAME = ''
DATABASE_PASSWORD = ''
DATABASE_NAME = ''
SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_USERNAME + ':' + DATABASE_PASSWORD + '@' + DATABASE_HOST + ':' + DATABASE_PORT + '/' + DATABASE_NAME
DATABASE_HOST
DATABASE_PORT
DATABASE_USERNAME
DATABASE_PASSWORD
DATABASE_NAME
DATABASE_HOST = 'localhost'
DATABASE_PORT = '3306'
DATABASE_USERNAME = 'flaskbda_user'
DATABASE_PASSWORD = 'password'
DATABASE_NAME = 'flaskbda'
デフォルトのデータベースを変更するには:
flaskbda
)、ユーザー ( flaskbda_user
)、およびパスワード ( password
) を作成します。config.py
を開きますimport pyodbc
のコメント。DATABASE_DRIVER
のコメント。DATABASE_ENGINE
をコメント化します。たとえば、 SQLServer DATABASE_ENGINE
をコメント化します。DATABASE_NAME
をコメント アウトし、SQLServer でコメントします。DATABASE_HOST
DATABASE_PORT
DATABASE_USERNAME
DATABASE_PASSWORD
DATABASE_NAME
SQLALCHEMY_DATABASE_URI
をコメント アウトし、SQLServer SQLALCHEMY_DATABASE_URI
をexcept
try
でコメントします。注:
SQLEXPRESS
を実行して接続しようとしている場合。 SQLServerSQLEXPRESS
変数のコメントを解除してください。これは、正しいSQLALCHEMY_DATABASE_URI
を作成する場合except
、try
時に処理されます。
注: Windows 認証が必要な場合。 SQLServer
TRUSTED_CONNECTION
変数のコメントを解除してください。これは、正しいSQLALCHEMY_DATABASE_URI
を作成する場合except
、try
時に処理されます。
##########
# SQLite #
##########
# DATABASE_ENGINE = 'sqlite:///'
# DATABASE_NAME = os.path.join(BASE_DIR, 'databases/sqlite/default.db')
# SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_NAME
#############
# SQLServer #
#############
import pyodbc # noqa: E402
DATABASE_ENGINE = 'mssql+pyodbc://'
# SQLEXPRESS = '\SQLEXPRESS' # for SQLEXPRESS
# TRUSTED_CONNECTION = 'yes' # for windows authentication.
DATABASE_DRIVER = 'SQL+Server+Native+Client+11.0' # for windows authentication.
DATABASE_HOST = ''
DATABASE_PORT = '1433'
DATABASE_USERNAME = ''
DATABASE_PASSWORD = ''
DATABASE_NAME = ''
try :
if SQLEXPRESS == ' \ SQLEXPRESS' :
try :
if TRUSTED_CONNECTION == 'yes' :
SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_HOST + ':' + DATABASE_PORT + SQLEXPRESS + '/' + DATABASE_NAME + '?trusted_connection=' + TRUSTED_CONNECTION + '&driver=' + DATABASE_DRIVER
else :
SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_USERNAME + ':' + DATABASE_PASSWORD + '@' + DATABASE_HOST + ':' + DATABASE_PORT + SQLEXPRESS + '/' + DATABASE_NAME + '&driver=' + DATABASE_DRIVER
except NameError :
SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_USERNAME + ':' + DATABASE_PASSWORD + '@' + DATABASE_HOST + ':' + DATABASE_PORT + SQLEXPRESS + '/' + DATABASE_NAME + '&driver=' + DATABASE_DRIVER
except NameError :
try :
if TRUSTED_CONNECTION == 'yes' :
SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_HOST + ':' + DATABASE_PORT + '/' + DATABASE_NAME + '?trusted_connection=' + TRUSTED_CONNECTION + '&driver=' + DATABASE_DRIVER
else :
SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_USERNAME + ':' + DATABASE_PASSWORD + '@' + DATABASE_HOST + ':' + DATABASE_PORT + SQLEXPRESS + '/' + DATABASE_NAME + '&driver=' + DATABASE_DRIVER
except NameError :
SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_USERNAME + ':' + DATABASE_PASSWORD + '@' + DATABASE_HOST + ':' + DATABASE_PORT + '/' + DATABASE_NAME + '&driver=' + DATABASE_DRIVER
DATABASE_HOST
DATABASE_PORT
DATABASE_USERNAME
DATABASE_PASSWORD
DATABASE_NAME
DATABASE_HOST = 'MSSQLSERVER'
DATABASE_PORT = '1433'
DATABASE_USERNAME = 'flaskbda_user'
DATABASE_PASSWORD = 'password'
DATABASE_NAME = 'flaskbda'
MS-SQL インスタンスにリモート接続権限が設定され、有効になっていることを確認します。参照 (こちら)[https://knowledgebase.apexsql.com/configure-remote-access-connect-remote-sql-server-instance-apexsql-tools/] ]:
「SQL サーバー構成管理」設定が正しく構成されていることを確認します。
注:インストールには
Client Tools Connectivity
必要です。「SQL サーバー構成管理」が見つからない場合は、Client Tools Connectivity
含めるようにインストールを変更する必要がある場合があります。
- 「」が見つからない場合は、代わりに「コンピュータの管理を使用する」ツールを使用する必要がある場合があります。アクセスするには。
- これは Windows 10 の問題のようです
マルチテナンシーは、ソフトウェアの単一インスタンスがサーバー上で実行され、複数のテナント (クライアント) にサービスを提供するソフトウェア アーキテクチャです。マルチテナント ソフトウェアを使用すると、1 つまたは複数のアプリケーションの複数の独立したインスタンスを共有環境で動作させることができます。
Flask-BDA は、垂直に分割されたマルチテナントをサポートします。垂直パーティション化とは、各テナントが異なるデータベース (およびデータベース接続文字列) を持つことを意味します。
デフォルトでは、Flask-BDA は
default
というテナントに接続します。これはSQLALCHEMY_BINDS
オブジェクト (config.py
にあります) を使用して行われます。このオブジェクトには、各テナントに必要な特定の接続の詳細が含まれている必要があります。デフォルトの接続の詳細は、SQLALCHEMY_DATABASE_URI
という文字列に結合されます。これは、単一テナントのセットアップを迅速かつ簡単に行えるようにするためのものです。
これと同じ構造を使用できますが、複数のテナントを持つ場合は、それらを
SQLALCHEMY_BINDS
オブジェクトにすぐに追加できます。新しいテナントを追加するには、次の手順を実行します。
SQLALCHEMY_BINDS
オブジェクトにテナントの名前と接続文字列の詳細を含む新しい行を作成します。 SQLALCHEMY_BINDS = {
"default" : SQLALCHEMY_DATABASE_URI ,
"client1" : 'sqlite:///databases/sqlite/client1.db' ,
}
URL に引数
organization=
追加することで、分離されたテナント データベースと対話できるようになります。例:example.com?organization=client1
ここで、client1
SQLALCHEMY_BINDS
オブジェクトに追加した名前です。
これは、
app/_init_.py
の@app.before_request
をインターセプトし、取得したグローバル変数g.organization
を使用して、app/mod_tenancy/multi_tenant.py
からdb.choose_tenant(g.organization)
を使用して DB エンジン バインディングを変更することで機能します。 URL 引数organization
取得することによって設定されます。これにより、データを分離したまま、アプリ内の同じコードをすべてのテナントのデータベースで使用できるようになります。
場合によっては、1 つの関数で異なるデータベースを操作する必要があることがあります (特にシステムを統合する場合、または異なるソースからデータを読み取る場合)。
デフォルトでは、すべてのコントローラーに
MultiBindSQLAlchemy
がインポートされます。
# import multiple bindings
from app . mod_tenancy . multi_bind import MultiBindSQLAlchemy
インポートの下には、単一の関数でさまざまなデータベースへのリンクを迅速に実装できるようにすることを目的としたコメントアウトされたコードがあります。まず、データベース バインディングを
SQLALCHEMY_BINDS
オブジェクトに追加する必要があります。新しいデータベースをSQLALCHEMY_BINDS
オブジェクトに追加する方法をよりよく理解するには、同じ機能を備えた分離データベースを参照してください。
次に、
db.<binding>
の構造に従って、db
オブジェクトにアタッチされる新しいオブジェクトを作成できます。例:db.first
ここで、first
はコードの残りの部分でバインディングを参照する名前です。次に、この変数をMultiBindSQLAlchemy
に割り当てることができます (例:db.first = MultiBindSQLAlchemy('first')
。
これにより、単一関数 (例:
db.first.execute(...)
で新しいデータベース バインディングとメイン テナントにアクセスできるカスタム コードを呼び出すことができるようになり、生の SQL コードを実行できます。
db . first = MultiBindSQLAlchemy ( 'first' )
##################################################
## this will only work for the execute function ##
##################################################
db . first . execute (...)
**注意: ** これは
execute
関数でのみ機能します。SQLAlchemy ORM を引き続き使用するための高度なテクニックがいくつかあります。SQLAlchemy 実行チュートリアルを参照してください。
モジュールは自己完結型のコンポーネントであるため、プログラムが成長するにつれて管理が容易になります。 Flask-BDA のモジュールは、データ モデル、ルート、およびロジックとビューを制御するための関連関数の作成に役立ちます。
新しい CRUD モジュールを作成すると、
create_module_template
フォルダーのすべての要素がアプリ ディレクトリにコピーされ、すべてのxyz
値をモジュール名に置き換え、以下で説明する追加のデータ モデル情報を追加することにより、指定したモジュール名に名前が変更されます。
<Path To>/<my_awesome_project>/create_module_json.py
を開いて実行します。<Path To>/<my_awesome_project>/
は、作成したプロジェクトへのパスです。 cd < Path To > / < my_awesome_project > /
python create_module_json . py - - module = Projects
Create new field Name (type the string : 'STOP_CREATING_FIELDS' to exit ): "name"
What datatype is name
Choose one of the following options
( 'String'
, 'Int'
, 'Float'
, 'Numeric'
, 'Text'
, 'Date'
, 'DateTime'
, 'Boolean'
, 'BigInt'
, 'Enum'
, 'JSON'
, 'LargeBinary' ): "String"
String Length ( 1 - 256 ): 256
Is name nullable ( 'True' , 'False' ): False
Is name unique ( 'True' , 'False' ): True
Does the name have a Relationship with another Data Model ? ( 'True' , 'False' ): False
Default value :
注:これは、正確な単語「STOP_CREATING_FIELDS」を入力して送信するまでループし続けます。
これにより、モジュールの複数のフィールドを迅速かつ簡単に作成できます。
上記のフィールドは、さまざまなフィールド タイプが相互作用し、複数のフィールドを作成していることを示しています。
注:関係は常に、指定されたモデルの
id
に基づいて作成されます。フィールド上にForeignKeyが作成され、モデルが提供する
id
フィールド間の遅延関係も作成されます。
Create new field Name (type the string : 'STOP_CREATING_FIELDS' to exit ): STOP_CREATING_FIELDS
Create module logic from Data Model ? ( 'True' , 'False' ): True
注: 「app/generated_config/models//models.json」の JSON ファイルからモジュールを生成することもできます。ここで、これを行うために入力するモジュールの名前を入力します。ファイルを開いて実行します。
<Path To>/<my_awesome_project>/create_module.py
*<Path To>/<my_awesome_project>/
は、作成したプロジェクトへのパスです * 指示を入力します。例:
cd < Path To > / < my_awesome_project > /
python create_module . py - - module = projects
これにより、以下の「アプリの変更点」で説明されているように、必要なファイルとフォルダーが作成されます。
create_module_template
フォルダーのファイルとフォルダーがProjects
モジュール用に作成され、app
フォルダーに追加されます。これにより、スキャフォールドされた管理 CRUD ビュー、REST API (一括挿入および更新付き)、GraphQL API、および公開ビューとロジックが作成され、作成したモジュールをすぐに操作できるようになります。
管理パネルから、新しいモジュールの作成、読み取り、更新、および削除 (「CRUD」) のアクションを実行できます。
一般向けのビューでは、ゲスト ユーザー (ログインしていないユーザー) が提供された情報のビューを確認できます。
└── `my_awesome_project`
└── app
├── generated_config
│ └── models
│ └── `projects`
│ └── models.json
└── `mod_projects`
├── templates
│ ├── mobile
│ │ └── `projects`
│ │ ├── admin
│ │ │ ├── create.html
│ │ │ ├── edit.html
│ │ │ ├── index.html
│ │ │ └── show.html
│ │ └── public
│ │ └── public_list.html
│ └── `projects`
│ ├── admin
│ │ ├── create.html
│ │ ├── edit.html
│ │ ├── index.html
│ │ └── show.html
│ └── public
│ └── public_list.html
├── api_controllers.py
├── controllers.py
├── forms.py
├── models.py
└── types.py
新しいモジュールを作成すると、新しいシステムと対話するための 3 つの方法 (
Public
、Admin
、REST API
、およびGraphQL API
が提供されます。
これらにアクセスするには、アプリが環境上で実行されている必要があります。
Public
ビューは、モジュールで提供されるデータの非認証ビューです。
xyz
モジュールの名前です)。../xyz/
public_list
Admin
ビューは、モジュールで提供されるデータの認証されたビューです。
xyz
モジュールの名前です)。../admin/xyz/
index
../admin/xyz/create
create
../admin/xyz/store
store
../admin/xyz/show/{id}
show
../admin/xyz/edit/{id}
edit
../admin/xyz/update/{id}
update
../admin/xyz/destroy/{id}
destroy
API
ビューは、REST API エンドポイント、関連ドキュメント、および実行プレイグラウンドのリストです。
Flask BDA は SwaggerUI を使用して REST API をユーザー/クライアントに提供します。
SwaggerUI を使用すると、実装ロジックを用意しなくても、開発チームであろうとエンド ユーザーであろうと、誰でも API のリソースを視覚化し、操作することができます。代わりに、OpenAPI (旧名 Swagger) 仕様から自動的に生成され、視覚的なドキュメントによってバックエンドの実装とクライアント側での利用が容易になります。
SwaggerUI にアクセスするには:
<base_URL>/api/docs
を挿入して SwaggerUI REST API にアクセスします (例: http://localhost:5000/api/docs
。SwaggerUI を使用せずに REST API にアクセスするには:
<base_URL>/
を挿入します。../api/xyz
XyzListResource
> get
../api/xyz
XyzListResource
> post
../api/xyz/{id}
XyzResource
> get
../api/xyz/{id}
XyzResource
> update
../api/xyz/{id}
XyzResource
> delete
../api/xyz/bulk
XyzBulkListResource
> post
../api/xyz/bulk
XyzBulkListResource
> update
../api/xyz/aggregate
XyzAggregateResource
> get
graphql
ビューは、GraphiQL ビュー、API エンドポイント、関連ドキュメント、および実行プレイグラウンドです。
Flask BDA は、graphene-python と GraphiQL を使用して GraphQL API をユーザー/クライアントに提示し、開発者の作業を容易にするためのシンプルだが拡張可能な API を提供します。
GraphQL は、REST およびアドホック Web サービス アーキテクチャの代替手段を提供するデータ クエリ言語です。
GraphiQL にアクセスするには:
<base_URL>/graphql
挿入して、GraphiQL、GraphQL API にアクセスします (例: http://localhost:5000/graphql
。GraphiQL を使用せずに GraphQL API にアクセスするには:
<base_URL>/
を挿入します。../graphql
mod_graphql
> query
> Query
> all_xyz
../graphql
mod_graphql
> mutation
> Mutation
> createXyz
現在サポートされているすぐに使用できる環境は 7 つあり (さらに多くの環境が近々サポートされる予定です)、 Windows / Linux / Mac
でそれぞれを構成する方法が説明されており、必要に応じてそれらを同時に実行することもできます。
ローカル アプリケーションを作成および開発するには、virtualenv を使用します。隔離された仮想 Python 環境を作成するためのツール。
pip install --upgrade pip
実行するには、管理者として「cmd」を実行する必要がある場合があります。cd <Path To>/my_awesome_project
cd < Path To > /my_awesome_project
pip install --upgrade pip
pip install virtualenv
virtualenv venv
venv S cripts a ctivate
pip install --upgrade pip
pip install --no-cache-dir -r requirements.txt
set FLASK_APP=app
set FLASK_ENV=development
flask run --port 5000
pip install --upgrade pip
実行するには、管理者として「cmd」を実行する必要がある場合があります。sudo
としてコマンドを実行します。例: sudo pip install --upgrade pip
cd < Path To > /my_awesome_project
pip install --upgrade pip
pip install virtualenv
virtualenv venv
source venv/bin/activate
pip install --upgrade pip
pip install --no-cache-dir -r requirements.txt
export FLASK_APP=app
export FLASK_ENV=development
flask run --port 5000
一部の共有ホスティング サービスは、サーバー上で Python アプリケーションを実行する機能を提供します。私は個人的に A2hosting を使用しました。彼らのサポートは素晴らしく、機能に対する価格は私が出会った中で最高のものの 1 つです。
注:共有ホスティング オプションは A2 に限定されません。ただし、これは私が Flask-BDA をテストし、共有ホスティング オプションをアップロードして実行した経験がある場所です。共有ホスティング オプションで同様の機能セットが提供されている場合は、お気軽にお使いください。
A2 の場合、Python アプリケーションを実行するようにサーバーをセットアップする必要があります。これには、たとえば、いくつかの構成が必要になる場合があります。
カスタム アプリケーションを動作させるには:
注:
Linux
環境では、要件pyodbc
デフォルトでは機能しません。このため、また共有環境であるため、動作させるための要件を追加する権限がない場合があります。インストールが失敗しないようにする最も簡単な方法は、サーバー上でこの要件をコメントアウトすることです。
requirements.txt
ファイルを開き、 pyodbc
を検索し、パッケージ名の前に#
とスペースを入れます。 # pyodbc==4.0.30
requirements.txt
からインストールします。SSH
ウィンドウでこれを実行していることを確認してください。 pip install --upgrade pip
pip install --no-cache-dir -r requirements.txt
Setup Python App
をもう一度クリックしますApplication startup file
run_shared_server.py
に変更します。コンテナ化されたアプリケーションを作成してデプロイするには、開発者や開発チームがアプリを構築して出荷するのに役立つ Docker を使用します。さらに、Docker はコンテナ化されたアプリケーションとマイクロサービスの構築と共有にも使用されます。
注: Github を使用していて docker がインストールされている場合 (インストール方法の詳細はドキュメントで後述します)、Github で
push
またはpull_request
実行するたびに、ファイルdocker-image.yml
で設定された新しいイメージがビルドされます。docker-image.yml
ただし、これを手動で行う場合は、次の手順に従ってください。
cd < Path To > /my_awesome_project
docker build -t flask_app:latest .
docker run -p 5000:5000 flask_app
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
systemctl start docker
cd < Path To > /my_awesome_project
docker build -t flask_app:latest .
docker run -it -p 5000:5000 flask_app
注:まだ開発中です
サーバーレス アプリケーションを作成してデプロイするために、サーバーレス フレームワークを使用しています。これにより、摩擦のないサーバーレス開発が可能になり、低コストの次世代クラウド インフラストラクチャ上で自動スケールするアプリを簡単に構築できるようになります。
サーバーレス フレームワークは、簡単な YAML + CLI の開発と、AWS、Azure、Google Cloud、Knative などへのデプロイを提供するオープンソース ツールです。
注:関数は状態を保持しないため、サーバーレスは「SQLite」をサポートしていないため、del=polying の前にデフォルトのデータベース文字列を調整する必要がある場合があります。
データベース文字列を更新するには、[Config]を参照してください。
npm update -g serverless
npm update -g serverless
choco install serverless
注:パッケージがインストールされない場合は、管理者としてコマンドを実行する必要がある場合があります。
「Windowsキー」を押して「cmd」と入力し、「コマンドプロンプト」という単語を「右クリック」して「管理者として実行」オプションを選択し、前の手順を再度実行します。
serverless
cd < Path To > /my_awesome_project
sls plugin install -n serverless-python-requirements
sls plugin install -n serverless-wsgi
serverless deploy
curl -o- -L https://slss.io/install | bash
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
systemctl start docker
cd < Path To > /my_awesome_project
sls plugin install -n serverless-python-requirements
sls plugin install -n serverless-wsgi
serverless deploy
注:まだ開発中です
Digital Ocean はサービスとしてのプラットフォーム (PaaS) です。 DigitalOcean の完全なクラウド プラットフォーム上でアプリケーションを開発、管理、拡張します。 Digital Ocean は、シンプルで予測可能な価格設定を提供します。クラウド内のスケーラブルなコンピューティング製品、フルマネージド データベース、高可用性でスケーラブルなストレージ オプションなどを使用して、自信を持って構築およびリリースできます。 Digital Ocean は、アプリケーションとデータベースをホストおよび拡張するために調整された適切な量のメモリを備えた仮想マシンを使用して、複雑な問題に対するシンプルなソリューションを提供します。
ターミナルからアプリケーションを作成して Heroku にデプロイするには、次の操作を行う必要があります。
138.197.67.25
SSH 経由で接続していない場合は、Digital Ocean のアカウントを登録した電子メール経由で
password
を受け取る必要があることに注意してください。
cd < Path To > / < my_awesome_project > /
scp -r < my_awesome_project > root@ < ip_address > :/
ssh root@ < ip_address >
ここで、
<Path To>/<my_awesome_project>/
作成したプロジェクトへのパスであり、<ip_address>
は<ip_address> eg:138.197.67.25
です。
注:リモートサーバーからのアクセスを許可するなど、SSHによって規定されているプロンプトに従ってください。
ログインしたら、次のような端末を見ることができるはずです。
root@ < droplet_name > :
cd < Path To > / < my_awesome_project > /
chmod +x setup.sh
bash setup.sh
virtualenv venv
source venv/bin/activate
sudo pip install --upgrade pip
sudo pip install --no-cache-dir -r requirements.txt
sudo pip install uwsgi
sudo ufw allow 5000
export FLASK_APP=app
uwsgi --socket 0.0.0.0:5000 --protocol=http -w wsgi:app
ここで、
5000
ポート番号です<droplet_name>
は名前です
cd < Path To > / < my_awesome_project > /
scp -r < my_awesome_project > root@ < ip_address > :/
ssh root@ < ip_address >
ここで、
<Path To>/<my_awesome_project>/
作成したプロジェクトへのパスであり、<ip_address>
は<ip_address> eg:138.197.67.25
です。
注:リモートサーバーからのアクセスを許可するなど、SSHによって規定されているプロンプトに従ってください。
ログインしたら、次のような端末を見ることができるはずです。
root@ < droplet_name > :
cd < Path To > / < my_awesome_project > /
chmod +x setup.sh
bash setup.sh
virtualenv venv
source venv/bin/activate
sudo pip install --upgrade pip
sudo pip install --no-cache-dir -r requirements.txt
sudo pip install uwsgi
sudo ufw allow 5000
export FLASK_APP=app
uwsgi --socket 0.0.0.0:5000 --protocol=http -w wsgi:app
ここで、
5000
ポート番号です<droplet_name>
は名前です
注:まだ開発中です
Herokuはサービスとしてのプラットフォーム(PAAS)です。 Herokuを使用すると、コミットメントゼロから始めて、ロックインなしで支払うことができます。すべてのサイズの開発者、チーム、および企業は、Herokuを使用してアプリを展開、管理、尺度することができます。シンプルなプロトタイプを構築している場合でも、ビジネス批判的な製品を構築する場合でも、Herokuの完全に管理されたプラットフォームは、アプリをすばやく配信するための簡単なパスを提供します。
ターミナルからHerokuへのアプリケーションを作成および展開するには、Heroku CLIをダウンロードしてインストールする必要があります。インストールを確認するには、端末からHerokuバージョンを確認できます。
heroku --version
注:ファイルでデータが失われる可能性があるため、HerokuはSQLiteの使用を提案していないため、データベース接続を変更したことを確認してください。 Herokuは無料のPostgresデータベースを提供しています。彼らの計画を見て、さまざまな計画に制限があるので、あなたに適した計画を選択してください。
cd < Path To > /my_awesome_project
heroku login
<my_awesome_project-flask-bda-app>
Webアプリの一意の名前を作成します<my_awesome_project-flask-bda-app>
。heroku create my_awesome_project-flask-bda-app
git push heroku master
<my_awesome_project-flask-bda-app>
に展開されます。 cd < Path To > /my_awesome_project
sudo snap install --classic heroku
heroku login
<my_awesome_project-flask-bda-app>
Webアプリの一意の名前を作成します<my_awesome_project-flask-bda-app>
。heroku create my_awesome_project-flask-bda-app
git push heroku master
<my_awesome_project-flask-bda-app>
に展開されます。 cd < Path To > /my_awesome_project
brew tap heroku/brew && brew install heroku
heroku login
<my_awesome_project-flask-bda-app>
Webアプリの一意の名前を作成します<my_awesome_project-flask-bda-app>
。heroku create my_awesome_project-flask-bda-app
git push heroku master
<my_awesome_project-flask-bda-app>
に展開されます。 ネイティブモバイルアプリの場合、React-Nativeを使用しています。具体的には、Expoをフレームワークとして、およびUniversal Reactアプリケーションのプラットフォームとして使用します。これは、同じJavaScript/TypescriptコードベースからiOS、Android、およびWebアプリを開発、構築、展開、および迅速に繰り返すのに役立つReactネイティブおよびネイティブプラットフォームを中心に構築された一連のツールとサービスです。
プッシュ通知を事前に設定しているので、そうする必要はありません。これは、あなたがより速く、より簡単に始めて稼働しやすいことを意味します。さらに、デフォルトのExpo-Notificationsパッケージを活用して、単純化された実装とアプローチを可能にします。
利点には、ワークフロー/プロセスの高速化とテスト、開発中に保存時に変更される変更を伴う空気(OTA)のアップデートを使用したリモートテストが含まれます。
ただし、いくつかの欠点があり、制限があり、Expoはこれらを認識しており、非常によく説明しています。事前に構築された方法を使用する前に、これらの制限を確認することをお勧めします。
すべてのユーザーのデバイスでネイティブに実行される1つのプロジェクトを構築します。
cd < Path To > /my_awesome_project_mobile_app
npm install -g expo-cli
npm install
cd < Path To > /my_awesome_project_mobile_app
npm install -g expo-cli
npm install
Flask BDAは、Webサイトをホストする場所を指示しないため、モバイルアプリにどこに行くべきかを伝える必要があります。
QuickStartの例では、
"My Awesome Project"
と呼ばれるプロジェクトを作成しました。ただし、プロジェクトを他のものと呼んでいる可能性があります。これにより、名前がすべて小文字であるフォルダーが作成され、すべての特殊文字を取り除き、スペースをアンダースコアに置き換えました。例:my_awesome_project
。
モバイルの場合、フォルダーのプレフィックスがプロジェクト名、
my_awesome_project_mobile_app
である別の"_mobile_app"
フォルダーを自動的に作成します。これは、Serverless
Configurationpackage.json
の問題を防ぎ、モバイルアプリのすべてのコードをWebサーバーに展開しないようにするためです。
まだ開発中および/またはホスティングのためにサービスプロバイダーを選択していない場合は、次のように使用できます。NGROKは、地元の環境にトンネルする一時的な公開URLを作成します。 Ngrokは、NatsとFirewallsの後ろの地元のサーバーを、安全なトンネルでパブリックインターネットに公開します。これにより、パブリックURLでWebサイトをデモし、展開せずにローカルに実行されているバックエンドに接続されたモバイルアプリをテストできます。
ローカル環境の指示に従ってローカル開発サーバーを開始します
以前にngrokに登録したことがない場合:
すでに登録しているが、インストールされていない場合:
ngrokターミナルが開いたら、ローカルサーバーからngrokにトンネルを作成します
5000
から変更した場合は、 http
の後に番号を交換して、正しいトンネルを作成できるようにします。 ngrok http 5000
ngrok by @inconshreveable
(Ctrl+C to quit)
Session Status online
Session Expires 1 hour, 59 minutes
Version 2.3.40
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://573d4ec93267.ngrok.io - > http://localhost:5000
Forwarding https://573d4ec93267.ngrok.io - > http://localhost:5000
Connections
ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
注:無料版はこのサーバーのみを2時間生かし続けるため、将来このプロセスに従う必要がある場合があります。このURLを「レポ」にプッシュすると、次の人にとっては機能しない場合があります。
my_awesome_project_mobile_app
を開きますapp.json
ファイルを選択し、行2 "server_base_url": "https://github.com/RyanJulyan/Flask-BDA"
選択して、 https://github.com/RyanJulyan/Flask-BDA
を自分のサーバー名。expo
アプリをインストールします。iOS
https://apps.apple.com/app/apple-store/id982107779に行きますAndroid
に移動:https://play.google.com/store/apps/details?id=host.exponent携帯電話にアプリをインストールしたら、ローカルマシンで開発サーバーを起動できます。
cd < Path To > /my_awesome_project_mobile_app
expo start
cd < Path To > /my_awesome_project_mobile_app
expo start
これにより、QRコードが付いたWebページが開きます。これにより、Androidを使用している場合はExpoアプリを使用するか、iOSを使用している場合はカメラを使用してコードをスキャンし、開発サーバーからアプリを直接開くことができます。
注:ネットワーク上の人がアプリをリモートでスキャンしてテストできるようにする場合は、QRコードの上の
tunnel
タブボタンを押します。
推奨事項の一部は、画像が最適化されることを確認することです。このExpoを行うには、画像の最適化を支援できるExpo-Optimizeパッケージを推奨しています。さらに、画像を最適化すると、ネイティブアプリTTI(または相互作用までの時間)を改善できます。これは、スプラッシュ画面での時間が短くなり、ネットワーク接続が不十分な場合の迅速な配信を意味します。
cd < Path To > /my_awesome_project_mobile_app
npm install -g sharp-cli
npx expo-optimize --quality 0.9
cd < Path To > /my_awesome_project_mobile_app
npm install -g sharp-cli
npx expo-optimize --quality 0.9
デスクトップアプリケーションを作成および開発するには、FlaskWebGUIを使用しています。クロムラッパーでFlask Webアプリケーションを作成および実行するためのツール。デスクトップアプリケーションを配布するには、pyinstallerを使用しています。 Pyinstallerは、Windows、GNU/Linux、Mac OS X、FreeBSD、Solaris、AIXの下のスタンドアロン実行可能ファイルにPythonアプリケーションをフリーズします。
各展開は、実行したい特定のプラットフォームで作成する必要があります。それぞれのプラットフォーム用の
build
フォルダーとdist
フォルダーを親フォルダーに配置することにより、これらの展開を管理できるスクリプトを作成しました。これらのフォルダーには、desktop_
が続いてプラットフォームが続きます。これは、特定のプラットフォームの分布を管理し、プロセスを構築できるようにするために純粋に行われ、異なるプラットフォームに構築するときにそれらを上書きすることはありません。
デスクトップへのエクスポートを正しく動作させるには、いくつかのコード変更が必要です。デフォルトでは、Flask-BDAはWebおよびモバイル開発を目的としており、サイトにレートリミッターを実装しています。残念ながら、サーバーに制限を格付けする必要があり、システムをデスクトップアプリケーションにエクスポートしているため、サーバーを実行していません。
そのため、リミッターへのすべての参照を削除する必要があります。これらは
app/__init__.py
で見つけることができます。これを行うには、テキストエディターでファイルを開き、次の行にコメントします。
# from flask_limiter import Limiter
# from flask_limiter.util import get_remote_address
# limiter = Limiter(
# app,
# key_func=get_remote_address,
# default_limits=app.config['DEFAULT_LIMITS']
# )
注:カスタムリミッターを追加した場合は、コントローラーにある
@limiter.limit
を検索します。これらの参照とインポート参照のすべてをコメントする必要があります。例:from app import limiter
これにより、エラーなしでデスクトップ実行可能ファイルとしてアプリケーションをエクスポートできます。
pip install --upgrade pip
cd <Path To>/my_awesome_project
cd < Path To > /my_awesome_project
pip install --upgrade pip
pip install virtualenv
virtualenv venv
venv S cripts a ctivate
pip install --upgrade pip
pip install --no-cache-dir -r requirements.txt
python create_desktop_installer_windows.py
pip install --upgrade pip
sudo pip install --upgrade pip
sudo
として実行します。 cd < Path To > /my_awesome_project
pip install --upgrade pip
pip install virtualenv
virtualenv venv
source venv/bin/activate
pip install --upgrade pip
pip install --no-cache-dir -r requirements.txt
python create_desktop_installer_lunix.py
pip install --upgrade pip
sudo pip install --upgrade pip
sudo
として実行します。 cd < Path To > /my_awesome_project
pip install --upgrade pip
pip install virtualenv
virtualenv venv
source venv/bin/activate
pip install --upgrade pip
pip install --no-cache-dir -r requirements.txt
python create_desktop_installer_mac.py
これにより、通常のデスクトップアプリケーションのように実行される最大化ウィンドウが開きます。これにより、ローカルにインストールされているChromeブラウザを使用してコンテンツを提供します。
デフォルトでは、このアプリケーションはポート
7000
で提供されます。ただし、既存のアプリケーションと競合する場合は、run_desktop.py
ファイルのポートを編集できます。
プロジェクトに追加のPythonパッケージを含める場合は、ターミナルから
pip freeze
を実行して、展開用に正しいパッケージを取得することを忘れないでください
pip freeze > requirements.txt
注:グローバルではなく、仮想環境から追加のPythonパッケージをインストールしてフリーズすることをお勧めします。これにより、
requirements.txt
小さく、特定のプロジェクトで使用しているパッケージに制限されています。
Flask BDAは、デフォルトでSwaggeruiを使用して、APIをユーザー/クライアントに支援および提示します。
Swaggeruiは、開発チームであろうと最終消費者であろうと、誰でも、実装ロジックを導入することなくAPIのリソースを視覚化および対話することができます。代わりに、Openapi(以前はSwaggerとして知られていた)仕様から自動的に生成され、視覚的なドキュメントにより、バックエンドの実装やクライアント側の消費が簡単になります。
swaggeruiにアクセスするには:
<base_URL>/api/docs
http://localhost:5000/api/docs
挿入して、swaggerui APIにアクセスします。多くの開発者は、APIをコードとテストおよび統合するために、Swaggeruiよりも郵便配達員を好むでしょう。郵便配達員に直接コレクションエクスポートを提供することで支援しました。
郵便配達員にコレクションをインポートするには:
Import...
(Ctrl+O)Link
を選択します<base_URL>/api/postman
を挿入: http://localhost:5000/api/postman
<base_URL>/aswagger.json
を使用しますhttp://localhost:5000/swagger.json
https://learning.postman.com/docs/getting-started/importing-and-exporting-data/#converting-postman-collections-from-v1-to-v2
npm install -g postman-collection-transformer
postman-collection-transformer convert -i <path to the input Postman collection file> -o <path to the downloaded Postman file> -j 1.0.0 -p 2.0.0 -P
<path to the input Postman collection file>
および<path to the downloaded Postman file>
は、ローカルマシンの物理ファイルパスです。Continue
Import
をクリックしますこれにより、左側でフォルダーとして使用できるPostmanコレクションがインポートされます(作成した各エンドポイントのサブフォルダーがあります)。
郵便配達員を使用して、さまざまなローレージとフレームワークのコードを生成できます。これらの言語には、以下が含まれますが、これらに限定されません。
新しく作成したAPIを既存のプロジェクトと統合できるようにする
場合によっては、外部リクエスト(外部APIへ)を作成する必要があります。 AJAXリクエストを使用してこれにアプローチすることもできますが、たとえば通貨変換を自動的に更新する場合など、サーバー側からこれらのリクエストを作成する必要がある場合があります。サーバーを介して外部APIにアクセスしたい場合は、コマンドを送信するためにWebページに積極的にユーザーに依存したくありません。代わりに、サーバーがこのコメントをアクティブにすることができるようにします。これを達成するために、リクエストモジュールを使用します。
import requests
requests . methodname ( params )
import requests
params = { "model" : "Mustang" }
x = requests . get ( 'https://w3schools.com/python/demopage.php' , params = params )
print ( x . status_code )
print ( x . text )
import requests
data = { "Name" : "Example" }
headers = { "Authorization" : "Bearer <token>" }
x = requests . post ( 'https://w3schools.com/python/demopage.php' , data = data , headers = headers )
print ( x . status_code )
print ( x . text )
import requests
import json
data = { "Name" : "Example" }
headers = { "Authorization" : "Bearer <token>" }
x = requests . post ( 'https://w3schools.com/python/demopage.php' , json = data , headers = headers )
print ( x . status_code )
print ( x . text )
# use this to load JSON returned as a python dictionary
return_data = json . loads ( x . text )
import requests
data = { "Name" : "Example" }
headers = { "Authorization" : "Bearer <token>" }
x = requests . put ( 'https://w3schools.com/python/demopage.php' , data = data , headers = headers )
print ( x . status_code )
print ( x . text )
import requests
import json
data = { "Name" : "Example" }
headers = { "Authorization" : "Bearer <token>" }
x = requests . put ( 'https://w3schools.com/python/demopage.php' , json = data , headers = headers )
print ( x . status_code )
print ( x . text )
# use this to load JSON returned as a python dictionary
return_data = json . loads ( x . text )
import requests
x = requests . delete ( 'https://w3schools.com/python/demopage.php' )
print ( x . status_code )
print ( x . text )
Ajax要求は、通常、XML/JSONを使用して内部または外部システムからデータおよび/または応答データを要求するJavaScriptの(ブラウザークライアント)によって作成されたHTTP要求です。 ajax要求は、デフォルトで</> htmxを使用して行われます。
HTMXは、属性でAJAX、CSSトランジション、ウェブケット、サーバーセントイベントに直接アクセスできるようにする依存関係のないライブラリであり、属性を使用して、ハイパーテキストのシンプルさとパワーを備えた最新のユーザーインターフェイスを構築できるようにします。 htmxの使用方法の詳細については、ドキュメントを参照してください。機能に関する完全な参照については、https://htmx.org/reference/を参照してください。
HTMXを使用して、アクティブ検索など、多くの一般的なUXパターンを実装できます。
< input type =" text " name =" q "
hx-get =" /trigger_delay "
hx-trigger =" keyup changed delay:500ms "
hx-target =" #search-results "
placeholder =" Search... " />
< div id =" search-results " > </ div >
Qという名前のこの入力は、入力が変更された場合にキーアップイベントの後に/trigger_delay
500ミリ秒にリクエストを発行し、ID検索結果を使用して結果をDIVに挿入します。
対称暗号化の利点にもかかわらず、この方法には、不正な個人がメッセージの秘密キーにアクセスできるようにする欠陥があります。
メッセージの秘密キーへの不正アクセスを防ぐ最も効果的な方法の1つは、diffie-hellmanアルゴリズムのような一方向関数を実装することです。この方法では、送信者と受信機のみがメッセージを復号化できます。
一方向関数は通常、受信したすべての入力の出力を計算できるアルゴリズムのタイプを使用して実装されます。ただし、この方法は、ランダムキーから正確な結果を導き出すことは不可能です。
テストは、プロジェクトが正常に実行されることを保証するための重要な部分です
Flask BDAで提供されるテストには3つの側面があります。
注: Python
unittest
手動で実行するには、ローカル環境をインストールしていることを確認してください
cd < Path To > /my_awesome_project
venv S cripts a ctivate
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
flake8 . --count --exit-zero --max-complexity=11 --max-line-length=127 --statistics
cd < Path To > /my_awesome_project
source venv/bin/activate
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
注: Python
unittest
手動で実行するには、ローカル環境をインストールしていることを確認してください
cd < Path To > /my_awesome_project
venv S cripts a ctivate
python -m unittest discover
cd < Path To > /my_awesome_project
venv/bin/activate
python -m unittest discover
シングルファイルの実行とセットアップ
プロジェクトフォルダー構造を構築するスターターフラスコプロジェクト
992px
未満のタブレット用500px
未満のモバイル用に中央に配置されています@mobile_template
デコレータを使用して、必要に応じてより良いモバイルエクスペリエンスに合わせてテンプレートビューを調整できます。{% if request.MOBILE %}True{% else %}False{% endif %}
で追加できます。config.py
config.py
を介して内蔵され、アクセス可能なデバッグcreate_module.py
ファイルからフラスコプロジェクト構造に適合するカスタムモジュールファイルとフォルダーを作成して、プロンプトを使用して以下を作成します。
public_list
index
create
store
show
edit
update
destroy
get
post
get
update
delete
event listeners
の変更のbefore
after
事前に構成されています。Insert
Update
Delete
public_list
index
create
store
show
edit
update
destroy
を削除しますget
post
get
update
delete
削除しますpost
update
get
public_list.html
(リスト要素)index.html
(リスト要素)create.html
(単一要素フォーム)show.html
(単一要素)edit.html
(単一要素フォーム)api/docs
(url)ブラウザサポート(最後の1つのメジャーバージョンは死んでいない)
└── `project_name`
├── .github
│ └── workflows
│ ├── docker-image.yml
│ └── run_tests.yml
├── app
│ ├── generated_config
│ │ ├── model_editor
│ │ └── models
│ │ ├── hierarchies
│ │ │ └── models.json
│ │ └── organisations
│ │ └── models.json
│ ├── mod_audit
│ │ ├── __init__.py
│ │ ├── controllers.py
│ │ └── models.py
│ ├── mod_users
│ │ ├── templates
│ │ │ ├── mobile
│ │ │ │ └── auth
│ │ │ │ ├── admin
│ │ │ │ │ ├── create.html
│ │ │ │ │ ├── edit.html
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── show.html
│ │ │ │ └── public
│ │ │ │ └── public_list.html
│ │ │ ├── email
│ │ │ │ ├── activate.html
│ │ │ │ └── reset.html
│ │ │ └── users
│ │ │ ├── admin
│ │ │ │ ├── create.html
│ │ │ │ ├── edit.html
│ │ │ │ ├── index.html
│ │ │ │ └── show.html
│ │ │ └── public
│ │ │ └── public_list.html
│ │ ├── __init__.py
│ │ ├── controllers.py
│ │ ├── forms.py
│ │ └── models.py
│ ├── mod_email
│ │ ├── __init__.py
│ │ ├── controllers.py
│ │ └── models.py
│ ├── mod_file_upload
│ │ ├── templates
│ │ │ └── file_upload
│ │ │ └── upload.html
│ │ ├── __init__.py
│ │ ├── controllers.py
│ │ ├── forms.py
│ │ └── models.py
│ ├── static
│ │ ├── css
│ │ ├── images
│ │ ├── js
│ │ ├── manifest.json
│ │ └── sw.js
│ ├── templates
│ │ ├── admin
│ │ │ └── index.html
│ │ ├── email
│ │ │ └── auth
│ │ │ ├── activate.html
│ │ │ └── reset.html
│ │ ├── mobile
│ │ ├── public
│ │ │ └── index.html
│ │ ├── 403.html
│ │ ├── 404.html
│ │ └── index.html
│ └── __init__.py
├── create_module_template
│ ├── generated_config
│ │ └── models
│ │ └── xyz
│ │ └── models.json
│ └── mod_xyz
│ ├── templates
│ │ ├── mobile
│ │ │ └── xyz
│ │ │ ├── admin
│ │ │ │ ├── create.html
│ │ │ │ ├── edit.html
│ │ │ │ ├── index.html
│ │ │ │ └── show.html
│ │ │ └── public
│ │ │ └── public_list.html
│ │ └── xyz
│ │ ├── admin
│ │ │ ├── create.html
│ │ │ ├── edit.html
│ │ │ ├── index.html
│ │ │ └── show.html
│ │ └── public
│ │ └── public_list.html
│ ├── api_controllers.py
│ ├── controllers.py
│ ├── forms.py
│ └── models.py
├── databases
│ └── sqlite
│ ├── core.db
│ └── default.db
├── .dockerignore
├── .gitignore
├── config.py
├── create_all_models_json.py
├── create_desktop_installer_lunix.py
├── create_desktop_installer_mac.py
├── create_desktop_installer_windows.py
├── create_module.py
├── create_module_json.py
├── Dockerfile
├── FLASK-BDA LICENSE
├── LICENSE
├── package.json
├── package-lock.json
├── Procfile
├── README.md
├── requirements.txt
├── run.py
├── run_desktop.py
├── run_shared_server.py
└── serverless.yml
モジュールはプログラムの一部です。プログラムは、1つ以上の独立した開発モジュールで構成されており、組み合わせるとプログラムを作成します。
モジュールは自己完結型コンポーネントであり、プログラムが成長するにつれて管理が容易になります。
Flask-BDAのモジュールは、ロジックとビューを制御するためのデータモデル、ルート、および関連する機能を作成するのに役立ちます
コントローラーは、関連するリクエスト処理ロジックを単一のクラスにグループ化できます。たとえば、USERCONTROLLERクラスは、ユーザーの表示、作成、更新、削除など、ユーザーに関連するすべての着信要求を処理する場合があります。
作成、読み取り、更新、および削除( "crud")
Lintingは、プログラマティックおよびスタイルエラーのソースコードの自動チェックです。これは、LINTツール(別名Linter)を使用して行われます。 LINTツールは、基本的な静的コードアナライザーです。
Lint、またはLinterは、プログラミングエラー、バグ、スタイルエラー、および疑わしいコンストラクトにフラグを立てるために使用される静的コード分析ツールです。
コンピュータープログラミングでは、ユニットテストは、ソースコードの個々のユニット(関連する制御データ、使用手順、および操作手順とともに1つ以上のコンピュータープログラムモジュールのセット)のセットが使用に適しているかどうかを判断するソフトウェアテスト方法です。 。
ローコード開発プラットフォームは、従来のハンドコーディングされたコンピュータープログラミングの代わりに、プログラマティックまたはグラフィカルなユーザーインターフェイスと構成を介してアプリケーションソフトウェアを作成するための開発環境を提供します。
これらの方法のいずれかまたはすべてでプロジェクトに貢献した場合、私たちは喜んでいるでしょう。
Python 3のライセンス情報を表示します。(https://docs.python.org/3.8/license.html)
Dockerのライセンス情報を表示します。 (https://www.docker.com/legal/components-licenses)およびその他の法的契約(https://www.docker.com/legal)
すべてのDocker画像と同様に、これらには、他のライセンス(BASHなど、Bash Distributionなど、封じ込められているプライマリソフトウェアの直接的または間接的な依存関係)の下にある可能性のある他のソフトウェアも含まれている可能性があります。
自動検出される可能性のある追加のライセンス情報は、Repo-INFOリポジトリのPython/ディレクトリにある場合があります。
事前に構築された画像の使用に関しては、画像ユーザーの責任は、この画像の使用が内部に含まれるすべてのソフトウェアに関連するライセンスに準拠するようにすることです。
サーバーレスフレームワークおよびその他の法的契約のライセンス情報を表示(https://app.serverless.com/legal/terms)。
許容可能な使用ポリシー(https://app.serverless.com/legal/aup)を遵守することを保証するのはユーザーの責任です。
Expoフレームワークおよびその他の法的契約のライセンス情報を表示(https://github.com/expo/expo/blob/master/license)。
Flask-BDAは、開発者に優しいFlask-BDAライセンスの下で作成および配布されます。 Flask-BDAライセンスは、人気のあるApache 2.0ライセンスから派生しています。
Flask-BDAライセンスは、お客様またはあなたの会社がFlask-BDAおよびDerivativativativativativativativativationが行うなどのデリバティブ作業を使用および配布するための法的要件です。アプリケーションまたはプロジェクトには別のライセンスを持つことができますが、元のライセンスを遵守する必要があります。
ライセンスと著作権通知の包含
Flask-BDAライセンスでは、Flask-BDAのすべてのコピー、およびFlask-BDAを使用して作成された派生作業にライセンスと著作権通知を含める必要があります。ライセンスと通知をどのように配布するかを決定するのはあなた次第です。以下は、これをどのように行うかの例です。
Copyright 2021 Flask-BDA、Ryan Juryanは、Flask-BDAライセンスバージョン0.1(「ライセンス」)に基づいてライセンスされています。ライセンスに準拠している場合を除き、 Flask-BDA
使用することはできません。 https://github.com/RyanJulyan/Flask-BDA/blob/main/LICENSE
で、該当する法律で要求されていない場合、または書面で合意しない限り、ライセンスのコピーを入手できます。 「基礎」と同様に、いかなる種類の保証も条件もありません。ライセンスに基づく権限と制限を管理する特定の言語のライセンスを参照してください。