Se ha agregado una nueva rama base. La rama base solo incluye el backend. Se ha reescrito en función del backend de la rama maestra. Tiene mejor control de permisos, motor de flujo de trabajo, gestión de operación y mantenimiento, soporte websocket y proporciona una variedad de. Funciones comunes. Integradas en utilidades.
Los cambios funcionales posteriores se basarán principalmente en la rama base, y la rama maestra solo manejará la compatibilidad. Puede cambiar a la rama base para ver los detalles.
Una plataforma de desarrollo básica para aplicaciones pequeñas y medianas basada en el control de permisos del modelo RBAC. El front-end y el back-end están separados. El back-end usa django+django-rest-framework, el front-end usa vue+ElementUI y el terminal móvil. utiliza uniapp+uView (puede publicar h5 y programas pequeños).
Autenticación JWT, puede usar simple_history para implementar la función de auditoría y admitir arrogancia
Los módulos integrados incluyen organizaciónusuariorolposicióndiccionario de datosbiblioteca de archivostareas cronometradasflujo de trabajo (la mayor parte del código se ha subido y el código back-end se encuentra en apps/wf)
Cuando se utiliza el flujo de trabajo, se recomienda utilizar Postgresql como base de datos. El siguiente entorno de vista previa utiliza SQLite, por lo que algunas consultas json no son compatibles. Para conocer los métodos de uso, consulte el documento de loonflow.
Admite permisos funcionales (control de cada interfaz) y permisos de datos simples (todos, este nivel y los inferiores, el mismo nivel y los inferiores, yo mismo, etc.)
Bienvenido a plantear problemas
La dirección de vista previa utiliza el servidor de ejecución, el administrador de cuentas y el administrador de contraseñas directamente. Opere con precaución y no cambie la contraseña http://49.232.29.236:2222/
Navegue a la carpeta del servidor
Crear un entorno virtual python -m venv venv
Activar entorno virtual .venvscriptsactivate
Instalar paquetes de dependencia pip install -r requirements.txt
Copie conf_e.py en la carpeta del servidor a conf.py y modifique la conexión de la base de datos y los parámetros DEBUG dentro según sea necesario.
Sincronizar la base de datos python manage.py migrate
Puede importar los datos iniciales usando python manage.py loaddata db.json
o usar la base de datos sqlite directamente (la contraseña de la cuenta de súper administración es admin y la base de datos se restablecerá de vez en cuando)
Crear un superadministrador python manage.py createsuperuser
Ejecute el servicio python manage.py runserver 8000
Navegar a la carpeta del cliente
Instalar nodo.js
Instalar paquetes de dependencia npm install --registry=https://registry.npmmirror.com
Ejecute el servicio npm run dev
Modifique nginx.conf cuando se ejecute localmente para mostrar archivos de recursos
listen 8012
location /media {
proxy_pass http://localhost:8000;
}
location / {
proxy_pass http://localhost:9528;
}
Ejecute nginx.exe
Abra localhost:8012 para acceder
Documento de interfaz localhost:8000/api/swagger/
Dirección de servidor localhost:8000/django/admin/
Preste atención a modificar conf.py al implementar
Los extremos frontal y posterior se pueden implementar por separado, proxy nginx. También puede empaquetar y reemplazar el dist de front-end con server/dist y luego ejecutar Collectstatic
Comience a usar gunicorn: ingrese al entorno virtual y ejecute gunicorn -w 5 -b 0.0.0.0:2251 server.wsgi
Si necesita websocket, también necesita configurar daphne para comenzar. Puede usar el supervisor para monitorear.
La configuración de Nginx se puede denominar de la siguiente manera:
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;
}
}
Hay Dockerfiles en los directorios front-end ./client
y back-end ./server
. Si necesita crear la imagen por separado, puede crearla usted mismo.
Aquí hablamos principalmente del inicio de Docker-Compose.
Modifique el archivo docker-compose.yml según los comentarios. Hay dos servicios principales, uno es backend
y el otro es frontend
.
El valor predeterminado es ejecutar el backend y el frontend en modo de desarrollo. Si necesita implementar en una sola máquina y desea utilizar Docker-Compose, el rendimiento será mejor si cambia al modo de producción.
puesta en marcha
cd <path-to-your-project>
docker-compose up -d
Después de un inicio exitoso, el puerto de acceso es el mismo que antes, puerto de interfaz 8000, puerto de front-end 8012. Si necesita cambiarlo, cambie docker-compose.yml usted mismo.
Si desea ejecutar el comando docker-compose exec <nombre del servicio> <comando>
Regala una castaña:
Si quiero ejecutar el comando de cambio de datos generado por el backend. python manage.py makemigrations
Luego use la siguiente declaración
docker-compose exec backend python manage.py makemigrations
Primero, debe poder usar django-rest-framework y comprender la solución front-end vue-element-admin.
Este proyecto utiliza enrutamiento de front-end. El back-end lee el código de permiso del usuario de acuerdo con la función del usuario y lo devuelve al front-end, que es cargado por el front-end (el código principal es el atributo de permisos y el método de verificación de permisos). en la tabla de enrutamiento)
El código central de los permisos de la función backend reescribe el método has_permission en server/apps/system/permission.py y define los códigos de permisos de permisos en APIView y ViewSet.
Debido a que los permisos de datos están relacionados con negocios específicos, simplemente definimos algunas reglas y reescribimos el método has_object_permission para que puedas usarlos según sea necesario;
Dado que la situación real es más complicada, se recomienda que usted mismo escriba la clase de permiso de drf de acuerdo con las diferentes situaciones.
Implementado usando paquetes apio y django_celery_beat
Necesita instalar Redis e iniciarlo en el puerto predeterminado, iniciar el trabajador y vencer
Ingrese al entorno virtual e inicie el trabajador: celery -A server worker -l info -P eventlet
, no es necesario agregar -P eventlet para sistemas Linux
Ingrese al entorno virtual y comience a batir: celery -A server beat -l info
El módulo de flujo de trabajo hace referencia a la implementación de loonflow y puede ver su documentación (la lógica es la misma, gracias a loonflow se ha subido la mayor parte del código).
Si está dispuesto a comunicarse, puede unirse al grupo QQ 235665873 o al grupo WeChat.