新しいベース ブランチが追加されました。ベース ブランチにはバックエンドのみが含まれており、マスター ブランチのバックエンドに基づいて書き直され、より優れた権限制御、ワークフロー エンジン、WebSocket サポートが提供されます。共通の機能がユーティリティに統合されています。
その後の機能変更は主に Base ブランチに基づいて行われ、master ブランチは互換性のみを処理します。詳細を表示するには Base ブランチに切り替えることができます。
RBAC モデルの権限制御に基づく中小規模のアプリケーション向けの基本的な開発プラットフォーム。フロントエンドとバックエンドは django+django-rest-framework を使用し、フロントエンドは vue+ElementUI を使用します。 uniapp+uView を使用します (h5 および小さなプログラムを公開できます)。
JWT 認証、simple_history を使用して監査機能を実装し、Swagger をサポートできます。
組み込みモジュールには、organizationuserrolepositiondatadictionaryfile librarytimed Tasksworkflow が含まれます (コードの大部分はアップロードされており、バックエンド コードは apps/wf にあります)。
ワークフローを使用する場合、データベースとして Postgresql を使用することを推奨します。以下のプレビュー環境は SQLite を使用するため、一部の JSON クエリはサポートされていません。使用方法については、基本的に同じですが、主に簡略化されています。
機能権限(各インターフェースへの制御)と単純なデータ権限(すべて、このレベル以下、同レベル以下、自分など)をサポートします。
問題提起を歓迎します
プレビュー アドレスでは、runserver、account admin、password admin が直接使用されます。 http://49.232.29.236:2222/ パスワードは変更せず、慎重に操作してください。
サーバーフォルダーに移動します
仮想環境を作成するpython -m venv venv
仮想環境をアクティブ化します.venvscriptsactivate
依存関係パッケージをインストールするpip install -r requirements.txt
サーバー フォルダー内の conf_e.py を conf.py にコピーし、必要に応じて内部のデータベース接続と DEBUG パラメーターを変更します。
データベースを同期するpython manage.py migrate
python manage.py loaddata db.json
使用して初期データをインポートすることも、sqlite データベースを直接使用することもできます (スーパー管理アカウントのパスワードは admin で、データベースは時々リセットされます)。
スーパー管理者を作成するpython manage.py createsuperuser
サービスpython manage.py runserver 8000
を実行します。
クライアントフォルダーに移動します
Node.jsをインストールする
依存関係パッケージをインストールするnpm install --registry=https://registry.npmmirror.com
サービスを実行しますnpm run dev
ローカルで実行しているときに nginx.conf を変更してリソース ファイルを表示する
listen 8012
location /media {
proxy_pass http://localhost:8000;
}
location / {
proxy_pass http://localhost:9528;
}
nginx.exeを実行します
localhost:8012を開いてアクセスします
インターフェイスドキュメント localhost:8000/api/swagger/
バックエンドアドレス localhost:8000/django/admin/
デプロイ時は conf.py の変更に注意してください
フロントエンドとバックエンドは、nginx プロキシとして個別にデプロイできます。フロントエンド dist をパッケージ化して、server/dist に置き換えてから、collectstatic を実行することもできます。
gunicorn の使用を開始します。仮想環境に入り、gunicorn -w 5 -b 0.0.0.0:2251 server.wsgi を実行します。
WebSocket が必要な場合は、スーパーバイザを使用して起動するように daphne を設定する必要もあります。
Nginx の設定は次のように参照できます。
server {
listen 2250;
client_max_body_size 1024m;
location /media/ {
alias /home/lighthouse/xx/media/;
limit_rate 800k;
}
location / {
alias /home/lighthouse/xx/dist/;
index index.html;
}
location ~ ^/(api|django)/ {
set $CSRFTOKEN "";
if ($http_cookie ~* "CSRFTOKEN=(.+?)(?=;|$)") {
set $CSRFTOKEN "$1";
}
proxy_set_header X-CSRFToken $CSRFTOKEN;
proxy_pass http://localhost:2251;
proxy_pass_header Authorization;
proxy_pass_header WWW-Authenticate;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /ws/ {
proxy_pass http://localhost:2252;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
フロントエンド./client
ディレクトリとバックエンド./server
ディレクトリに Dockerfile があり、イメージを個別に構築する必要がある場合は、自分で構築できます。
ここでは主に docker-compose の起動について説明します。
コメントに従って docker-compose.yml ファイルを変更します。これには 2 つの主要なサービスがあり、1 つはbackend
、もう 1 つはfrontend
です。
デフォルトでは、バックエンドとフロントエンドは開発モードで実行されます。単一マシンにデプロイする必要があり、docker-compose を使用したい場合は、運用モードに変更するとパフォーマンスが向上します。
起動する
cd <path-to-your-project>
docker-compose up -d
正常に起動すると、アクセス ポートは以前と同じ、インターフェイス ポート 8000、フロントエンド ポート 8012 になります。変更する必要がある場合は、docker-compose.yml を自分で変更してください。
コマンド docker-compose exec <サービス名> <コマンド> を実行する場合
栗をあげます:
バックエンド生成データ変更コマンドを実行したい場合。 python manage.py makemigrations
次に、次のステートメントを使用します
docker-compose exec backend python manage.py makemigrations
まず、django-rest-framework を使用でき、vue-element-admin フロントエンド ソリューションを理解できる必要があります。
このプロジェクトでは、フロントエンド ルーティングを使用します。バックエンドは、ユーザー ロールに従ってユーザー許可コードを読み取り、それをフロントエンドに返します。このコードは、フロントエンドによって読み込まれます (コア コードは perms 属性と checkpermission メソッドです)。ルーティングテーブル内)
バックエンド関数権限のコア コードは、server/apps/system/permission.py の has_permission メソッドを書き換え、APIView および ViewSet で権限コードを定義します。
データ権限は特定のビジネスに関連しているため、いくつかのルールを定義し、必要に応じて使用できる has_object_permission メソッドを書き直すだけです。
実際の状況はさらに複雑であるため、さまざまな状況に応じて drf の Permission_class を自分で記述することをお勧めします。
celery および django_celery_beat パッケージを使用して実装
Redisをインストールしてデフォルトのポートで起動し、ワーカーを起動してビートする必要があります
仮想環境に入り、ワーカーを開始します: celery -A server worker -l info -P eventlet
システムの場合は -Peventlet を追加する必要はありません。
仮想環境に入り、beat を開始します: celery -A server beat -l info
ワークフロー モジュールは loonflow の実装を参照し、そのドキュメントを表示できます (loonflow のおかげで、ほとんどのコードがアップロードされています)。
コミュニケーションをとりたい場合は、QQ グループ 235665873 または WeChat グループに参加できます。