Ein neuer Basiszweig wurde hinzugefügt. Er wurde basierend auf dem Backend des Hauptzweigs neu geschrieben. Er verfügt über eine bessere Berechtigungssteuerung, eine bessere Betriebs- und Wartungsverwaltung sowie Websocket-Unterstützung Gemeinsame Funktionen. In Dienstprogramme integriert.
Spätere funktionale Änderungen basieren hauptsächlich auf dem Basiszweig, und der Hauptzweig kümmert sich nur um die Kompatibilität. Sie können zum Basiszweig wechseln, um die Details anzuzeigen.
Eine grundlegende Entwicklungsplattform für kleine und mittlere Anwendungen, die auf der Berechtigungssteuerung des RBAC-Modells basiert. Das Front-End verwendet Django + Django-Rest-Framework, das Front-End verwendet Vue + ElementUI und das mobile Terminal verwendet uniapp+uView (kann h5 und kleine Programme veröffentlichen).
Bei der JWT-Authentifizierung können Sie simple_history verwenden, um die Prüffunktion zu implementieren und Swagger zu unterstützen
Zu den integrierten Modulen gehören OrganisationBenutzerRollePositionDatenwörterbuchDateibibliothekzeitgesteuerte AufgabenWorkflow (der größte Teil des Codes wurde hochgeladen und der Back-End-Code befindet sich in apps/wf).
Bei der Verwendung von Workflow wird empfohlen, Postgresql als Datenbank zu verwenden. Die folgenden Vorschauumgebungen werden daher nicht unterstützt. Informationen zu den Verwendungsmethoden finden Sie im Loonflow-Dokument.
Unterstützt funktionale Berechtigungen (Steuerung für jede Schnittstelle) und einfache Datenberechtigungen (alle, diese Ebene und darunter, dieselbe Ebene und darunter, ich selbst usw.)
Gerne können Sie Fragen ansprechen
Die Vorschauadresse verwendet direkt Runserver, Kontoadministrator und Passwortadministrator. Bitte gehen Sie vorsichtig vor und ändern Sie nicht das Passwort http://49.232.29.236:2222/
Navigieren Sie zum Serverordner
Erstellen Sie eine virtuelle Umgebung python -m venv venv
Virtuelle Umgebung aktivieren .venvscriptsactivate
Installieren Sie die Abhängigkeitspakete pip install -r requirements.txt
Kopieren Sie conf_e.py im Serverordner nach conf.py und ändern Sie die Datenbankverbindung und die darin enthaltenen DEBUG-Parameter nach Bedarf.
Synchronisieren Sie die python manage.py migrate
Sie können die Anfangsdaten mit python manage.py loaddata db.json
importieren oder die SQLite-Datenbank direkt verwenden (das Passwort des Super-Management-Kontos lautet admin und die Datenbank wird von Zeit zu Zeit zurückgesetzt).
Erstellen Sie einen Superadministrator python manage.py createsuperuser
Führen Sie den Dienst python manage.py runserver 8000
aus
Navigieren Sie zum Client-Ordner
Installieren Sie node.js
Installieren Sie die Abhängigkeitspakete npm install --registry=https://registry.npmmirror.com
Führen Sie den Dienst npm run dev
aus
Ändern Sie nginx.conf bei lokaler Ausführung, um Ressourcendateien anzuzeigen
listen 8012
location /media {
proxy_pass http://localhost:8000;
}
location / {
proxy_pass http://localhost:9528;
}
Führen Sie nginx.exe aus
Öffnen Sie „localhost:8012“, um darauf zuzugreifen
Schnittstellendokument localhost:8000/api/swagger/
Backend-Adresse localhost:8000/django/admin/
Achten Sie bei der Bereitstellung darauf, conf.py zu ändern
Das Front-End und das Back-End können separat bereitgestellt werden, Nginx-Proxy. Sie können den Front-End-Verteiler auch packen und durch Server/Verteiler ersetzen und dann Collectstatic ausführen
Beginnen Sie mit der Verwendung von Gunicorn: Betreten Sie die virtuelle Umgebung und führen Sie gunicorn -w 5 -b 0.0.0.0:2251 server.wsgi aus
Wenn Sie einen WebSocket benötigen, müssen Sie Daphne auch zum Starten konfigurieren. Sie können Supervisor zur Überwachung verwenden.
Die Nginx-Konfiguration kann wie folgt bezeichnet werden:
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;
}
}
Es gibt Docker-Dateien in den Front-End-Verzeichnissen ./client
und Back-End ./server
. Wenn Sie das Image separat erstellen müssen, können Sie es selbst erstellen.
Hier sprechen wir hauptsächlich über den Start von Docker-Compose.
Ändern Sie die Datei docker-compose.yml entsprechend den Kommentaren. Es gibt zwei Hauptdienste darin, einer ist backend
und der andere ist frontend
.
Standardmäßig werden Backend und Frontend im Entwicklungsmodus ausgeführt. Wenn Sie die Bereitstellung auf einer einzelnen Maschine durchführen müssen und Docker-Compose verwenden möchten, ist die Leistung besser, wenn Sie in den Produktionsmodus wechseln.
Start-up
cd <path-to-your-project>
docker-compose up -d
Nach erfolgreichem Start ist der Zugriffsport derselbe wie zuvor, Schnittstellenport 8000, Front-End-Port 8012. Wenn Sie ihn ändern müssen, ändern Sie docker-compose.yml selbst.
Wenn Sie den Befehl docker-compose exec <Dienstname> <Befehl> ausführen möchten
Schenken Sie eine Kastanie:
Wenn ich den vom Backend generierten Datenänderungsbefehl ausführen möchte. python manage.py makemigrations
Dann verwenden Sie die folgende Anweisung
docker-compose exec backend python manage.py makemigrations
Zunächst müssen Sie in der Lage sein, das Django-Rest-Framework zu verwenden und die Front-End-Lösung vue-element-admin zu verstehen.
Dieses Projekt verwendet Front-End-Routing. Das Back-End liest den Benutzerberechtigungscode entsprechend der Benutzerrolle und gibt ihn an das Front-End zurück, das vom Front-End geladen wird (der Kerncode ist das Perms-Attribut und die Checkpermission-Methode). in der Routing-Tabelle)
Der Kerncode der Backend-Funktionsberechtigungen schreibt die Methode has_permission unter server/apps/system/permission.py neu und definiert Perms-Berechtigungscodes in APIView und ViewSet.
Da sich Datenberechtigungen auf bestimmte Unternehmen beziehen, definieren wir einfach ein paar Regeln und schreiben die Methode has_object_permission neu. Sie können sie nach Bedarf verwenden.
Da die tatsächliche Situation komplizierter ist, wird empfohlen, die Erlaubnis_Klasse von DRF je nach Situation selbst zu schreiben.
Implementiert mit den Paketen Celery und Django_celery_beat
Sie müssen Redis installieren und am Standardport starten sowie den Worker und Beat starten
Betreten Sie die virtuelle Umgebung und starten Sie den Worker: celery -A server worker -l info -P eventlet
. Für Linux-Systeme ist es nicht erforderlich, -P eventlet hinzuzufügen
Betreten Sie die virtuelle Umgebung und starten Sie beat: celery -A server beat -l info
Das Workflow-Modul bezieht sich auf die Implementierung von loonflow und kann dessen Dokumentation anzeigen (die Logik ist dieselbe, dank loonflow wurde der Großteil des Codes hochgeladen).
Wenn Sie bereit sind zu kommunizieren, können Sie der QQ-Gruppe 235665873 oder der WeChat-Gruppe beitreten