Um novo branch base foi adicionado. O branch base inclui apenas o backend. Ele foi reescrito com base no backend do branch master. Possui melhor controle de permissão, mecanismo de fluxo de trabalho, gerenciamento de operação e manutenção, suporte a websocket e fornece uma variedade de. funções comuns Integradas em utilitários.
As alterações funcionais posteriores serão baseadas principalmente no branch base, e o branch master tratará apenas da compatibilidade. Você pode mudar para o branch base para visualizar os detalhes.
Uma plataforma básica de desenvolvimento para aplicativos de pequeno e médio porte baseada no controle de permissão do modelo RBAC. O front-end e o back-end são separados por django + django-rest-framework, o front-end usa vue + ElementUI e o terminal móvel. usa uniapp + uView (pode publicar programas h5 e pequenos).
Autenticação JWT, você pode usar simple_history para implementar a função de auditoria e oferecer suporte a swagger
Os módulos integrados incluem organizaçãousuáriofunçãoposiçãodicionário de dadosbiblioteca de arquivostarefas cronometradasfluxo de trabalho (a maior parte do código foi carregada e o código de back-end está localizado em apps/wf)
Ao usar o fluxo de trabalho, é recomendado usar Postgresql como banco de dados. O ambiente de visualização a seguir usa SQLite, portanto, algumas consultas json não são suportadas. Para métodos de uso, consulte o documento loonflow.
Suporta permissões funcionais (controle para cada interface) e permissões de dados simples (todos, deste nível e abaixo, mesmo nível e abaixo, eu mesmo, etc.)
Bem-vindo para levantar questões
O endereço de visualização usa runserver, conta admin e senha admin diretamente. Por favor, opere com cuidado e não altere a senha http://49.232.29.236:2222/
Navegue até a pasta do servidor
Crie um ambiente virtual python -m venv venv
Ativar ambiente virtual .venvscriptsactivate
Instale pacotes de dependência pip install -r requirements.txt
Copie conf_e.py na pasta do servidor para conf.py e modifique a conexão do banco de dados e os parâmetros DEBUG conforme necessário.
Sincronizar banco de dados python manage.py migrate
Você pode importar os dados iniciais usando python manage.py loaddata db.json
ou usar o banco de dados sqlite diretamente (a senha da conta de supergerenciamento é admin e o banco de dados será redefinido de vez em quando)
Crie um superadministrador python manage.py createsuperuser
Execute o serviço python manage.py runserver 8000
Navegue até a pasta do cliente
Instale o node.js
Instale pacotes de dependência npm install --registry=https://registry.npmmirror.com
Execute o serviço npm run dev
Modifique nginx.conf ao executar localmente para exibir arquivos de recursos
listen 8012
location /media {
proxy_pass http://localhost:8000;
}
location / {
proxy_pass http://localhost:9528;
}
Execute nginx.exe
Abra localhost:8012 para acessar
Documento de interface localhost:8000/api/swagger/
Endereço de back-end localhost:8000/django/admin/
Preste atenção ao modificar o conf.py ao implantar
Os front-ends e back-ends podem ser implantados separadamente, proxy nginx. Você também pode empacotar e substituir o front-end dist por server/dist e, em seguida, executar collectstatic
Comece a usar o gunicorn: Entre no ambiente virtual e execute gunicorn -w 5 -b 0.0.0.0:2251 server.wsgi
Se você precisar do websocket, também precisará configurar o daphne para iniciar. Você pode usar o supervisor para monitorar.
A configuração do Nginx pode ser referida da seguinte forma:
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;
}
}
Existem Dockerfiles nos diretórios front-end ./client
e back-end ./server
. Se precisar construir a imagem separadamente, você mesmo pode construí-la.
Aqui falamos principalmente sobre a inicialização do docker-compose.
Modifique o arquivo docker-compose.yml de acordo com os comentários. Existem dois serviços principais nele, um é backend
e o outro é frontend
.
O padrão é executar o backend e o frontend no modo de desenvolvimento. Se você precisar implantar em uma única máquina e quiser usar o docker-compose, o desempenho será melhor se você mudar para o modo de produção.
comece
cd <path-to-your-project>
docker-compose up -d
Após a inicialização bem-sucedida, a porta de acesso é a mesma de antes, porta de interface 8000, porta front-end 8012. Se precisar alterá-la, altere você mesmo o docker-compose.yml.
Se você deseja executar o comando docker-compose exec <nome do serviço> <comando>
Dê uma castanha:
Se eu quiser executar o comando de alteração de dados gerado pelo backend. python manage.py makemigrations
Então use a seguinte declaração
docker-compose exec backend python manage.py makemigrations
Primeiro, você deve ser capaz de usar o django-rest-framework e entender a solução front-end vue-element-admin.
Este projeto usa roteamento de front-end. O back-end lê o código de permissão do usuário de acordo com a função do usuário e o retorna ao front-end, que é carregado pelo front-end (o código principal é o atributo perms e o método checkpermission). na tabela de roteamento)
O código principal das permissões de função de back-end reescreve o método has_permission em server/apps/system/permission.py e define códigos de permissão de permissões em APIView e ViewSet.
Como as permissões de dados estão relacionadas a negócios específicos, simplesmente definimos algumas regras e reescrevemos o método has_object_permission para que você possa usá-las conforme necessário.
Como a situação real é mais complicada, é recomendável escrever você mesmo a permissão_class do drf de acordo com as diferentes situações.
Implementado usando pacotes celery e django_celery_beat
Você precisa instalar o redis e iniciá-lo na porta padrão, e iniciar o trabalhador e vencer
Entre no ambiente virtual e inicie o trabalhador: celery -A server worker -l info -P eventlet
, não há necessidade de adicionar -P eventlet para sistemas Linux
Entre no ambiente virtual e inicie a batida: celery -A server beat -l info
O módulo de fluxo de trabalho refere-se à implementação do loonflow e pode visualizar sua documentação (a lógica é a mesma, graças ao loonflow, você pode visualizar o swagger).
Se você estiver disposto a se comunicar, pode ingressar no grupo QQ 235665873 ou no grupo WeChat