RuoYi 若依官方网站: RuoYi — это отличная Java-система управления бэкендом
django-vue-admin: django-vue-admin — это отличное решение для разработки бэкенд-системы на основе Django
Кронос (xiaonuo.vip): Первая в Китае платформа быстрого разработки с использованием криптографии
Предоставляется группа для технического обмена. В данный момент в группе еще мало людей, но я искренне надеюсь, что вы присоединитесь и активно обсудите вопросы. Поскольку в проекте пока нет подробной документации по использованию (я все еще должен ее написать, и мне немного стыдно), вы сможете легко обсудить возникающие вопросы и предложить новые функции, которые вы хотели бы видеть. Добро пожаловать!
25 апреля 2024 года группа достигла 200 человек, и теперь для присоединения требуется приглашение. Если вы хотите присоединиться, свяжитесь со мной, укажите, что вы хотите присоединиться к группе, и я добавлю вас.
Адрес для демонстрации на ПК: https://kinit.ktianc.top
Демонстрация WeChat Mini Program:
Административный аккаунт:
Тестовый аккаунт:
Адрес скрипта: scripts/crud_generate/main.py
Для использования этой функции сначала необходимо вручную создать ORM-модели, затем код будет создан на основе этих моделей. Включает в себя следующие коды:
Код сериализации schema
Имя файла schema будет использовать настроенное имя en_name. Если файл уже существует, он будет удален, а затем создан заново. Схема кода содержимого сгенерирована после чего новый созданный класс будет импортирован в файл __init__.py
.
Dal код для работы с данными
Имя dal файла будет использовать по умолчанию crud.py
, в настоящее время поддержка кастомизации не предусмотрена.
Если dal файл уже существует и содержит код, то новый dal класс модели будет добавлен в конец файла, а также будут объединены импортируемые модули в файле.3. param код для параметров запроса
Имя param файла будет формироваться аналогично схеме.
Будет создан минимальный по умолчанию param класс.
view код для представления
Имя view файла также будет использовать по умолчанию view.py
, в настоящее время поддержка кастомизации не предусмотрена.
Если view файл уже существует, то будут выполнены аналогичные действия как для dal.
В скрипте в настоящее время имеются два метода:
if __name__ == '__main__':
from apps.vadmin.auth.models import VadminUser
crud = CrudGenerate(VadminUser, "пользователь", "user")
# только вывод кода, без выполнения создания и записи
crud.generate_codes()
# создание и запись кода
crud.main()
В настоящее время нет проверки существующего кода, например, если UserDal
уже существует, он всё равно будет добавлен.
B站 видео демонстрация: https://www.bilibili.com/video/BV19e411a7zP/
Адрес на gitee (рекомендуемый): https://gitee.com/ktianc/kinit
Адрес на github: https://github.com/vvandk/kinit
Меню управления: настройка системного меню, права доступа к операциям, кнопкам, интерфейсам и API.
Управление отделами: поддержка конфигурации отделов с неограниченным уровнем вложенности.
Управление ролями: настройка ролей, права доступа к меню и отделам.
Управление пользователями: пользователи являются операторами системы, эта функция предназначена для настройки пользователей системы.- [x] Личная страница: настройка личной информации пользователя, изменение пароля и т.д.
Управление словарями: поддержка управления часто используемыми фиксированными данными в системе.
Загрузка файлов: интеграция с облачным хранилищем Aliyun OSS и локальным хранилищем.
Аутентификация: поддержка входа пользователя с использованием номера телефона и пароля, а также входа с использованием кода подтверждения.
Объяснение: пароль нового пользователя по умолчанию будет равен последним шести цифрам номера телефона;
Объяснение: пользователь должен изменить свой пароль при первом входе.
Управление системой: динамическая настройка параметров системы
заголовок сайта, логотип, описание, иконка, номер регистрации, информация в подвале, информация для WeChat Mini Program и т.д.
Распределение пользователей: отображение распределения пользователей по регионам с использованием карт Google Maps
Обзор данных: предоставление двух шаблонов для статистического анализа данных, что позволяет более наглядно просматривать статистику
Умная панель: отображение данных анализа данных для реального времени мониторинга качества воздуха в офисе
Журнал входа: регистрация и поиск журналов входа пользователей
Журнал действий: детальное отслеживание действий пользователей системы при каждом использовании функций- [x] Документация API: предоставление автоматически сгенерированной интерактивной документации API и документации ReDoc
Импорт/Экспорт: поддержка гибкого импорта и экспорта данных
Добавлены асинхронные операции с базами данных Redis
, MySQL
, MongoDB
Командная строка: добавлено приложение Typer
для командной строки, что упрощает инициализацию данных и миграцию моделей таблиц
Планирование задач: онлайн-управление задачами (добавление, изменение, удаление) с возможностью просмотра журналов выполнения задач
Аутентификация: поддержка входа пользователей с использованием номера телефона и пароля, а также однокнопочного входа через WeChat
Пояснение: по умолчанию пароль нового пользователя равен последним шести цифрам номера телефона;
Пояснение: при первом входе пользователь должен изменить текущий пароль.
Навигация: Главная страница, Мой профиль, Рабочий стол
Основные функции: редактирование профиля, изменение аватара, изменение пароля, часто задаваемые вопросы, о нас и т.д.
FastAPI: знание фреймворка для создания веб-интерфейсов API
SQLAlchemy 2.0: работа с базами данных
Typer: знание использования инструментов командной строки
MySQL и MongoDB и Redis: знание баз данных для хранения данных
Документация API для IP-запросов: сервис для поиска IP-адресов, предоставляющий 1000 бесплатных запросов### Версия для ПК - node и git - окружение для разработки проекта
Vite - знакомство с особенностями Vite
Vue3 - знание основных синтаксических конструкций Vue
TypeScript - знание основных синтаксических конструкций TypeScript
ES6+ - знание основных синтаксических конструкций ES6
Vue-Router-Next - знание основных синтаксических конструкций Vue Router
Element-Plus - использование основных элементов Element-Plus
vue3-json-viewer: простой и удобный компонент для отображения JSON-контента, совместимый с Vue3 и Vite.
API карт Google (amap.com): JSAPI 2.0 - это четвертая бесплатная версия Web-карты от Google Maps API.### Мобильная разработка
uni-app - освоение базовых синтаксисов uni-app
Vue2 - освоение базовых синтаксисов Vue
uView UI 2 - базовое использование компонентов uView UI
uni-read-pages - автоматическое чтение всех конфигураций из файла pages.json
.
uni-simple-router - использование vue-router для перехода между маршрутами в uni-app.### Планирование задач
Python3 - Освоение базовых синтаксисов Python3
APScheduler - Освоение планировщика задач
Получение кода
git clone https://gitee.com/ktianc/kinit.git
Зависимости для серверной части:
Python == 3.10.x (другие версии не проверялись)
Зависимости для клиентской части:
nodejs >= 18.0 < 19
pnpm >= 8.1.0 < 9
Версии баз данных:
MySQL >= 8.0 (версии выше 8 не проверялись, версии ниже 8 не проверялись, PostgreSQL не проверялся, замена может потребовать настроек)
MongoDB >= 7.0.12 < 8 (версии выше 7 или ниже 7 не проверялись)
Redis (рекомендуется использовать последнюю стабильную версию)
Установка зависимостей
cd kinit-api
pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
Изменение конфигурации окружения проекта
Изменение файла application/settings.py
# Безопасное предупреждение: Не включайте отладку в режиме производства!
DEBUG = True # Если текущее окружение - разработка, установите True, если производство, установите False
Изменение конфигурации базы данных проекта
В каталоге application/config
- development.py: для разработки
# Конфигурация подключения к базе данных MySQL
# Официальная документация движка: https://www.osgeo.cn/sqlalchemy/core/engines.html
# Пример конфигурации подключения к базе данных: mysql+asyncmy://имя_пользователя:пароль@адрес_базы:порт/имя_базы
SQLALCHEMY_DATABASE_URL = "mysql+asyncmy://имя_пользователя:пароль@адрес_базы:порт/имя_базы"
SQLALCHEMY_DATABASE_TYPE = "mysql"
# Конфигурация Redis
REDIS_DB_ENABLE = True
REDIS_DB_URL = "redis://:пароль@адрес:порт/база"
# Конфигурация MongoDB
MONGO_DB_ENABLE = True
MONGO_DB_NAME = "имя_базы"
MONGO_DB_URL = f"mongodb://имя_пользователя:пароль@адрес:порт/? authSource={MONGO_DB_NAME}"
# Конфигурация облачного хранилища OSS от Alibaba Cloud
# AccessKey предоставляет полный доступ ко всем API, что повышает риск. Рекомендуется создавать и использовать пользователей RAM для доступа к API или повседневного обслуживания. Пожалуйста, перейдите в консоль управления RAM для создания пользователей RAM.
# yourEndpoint укажите конечную точку, соответствующую региону, в котором находится ваш Bucket. Например, для Восточный Китай (Гуанчжоу) конечная точка будет https://oss-cn-hangzhou.aliyuncs.com.
# * [accessKeyId] {String} - AccessKey, созданный в консоли управления Alibaba Cloud.
# * [accessKeySecret] {String} - AccessSecret, созданный в консоли управления Alibaba Cloud.
# * [bucket] {String} - Bucket, созданный в консоли управления или с помощью PutBucket.
# * [endpoint] {String} - Регион, в котором находится ваш Bucket, по умолчанию oss-cn-hangzhou.
ALIYUN_OSS = {
``` "accessKeyId": "идентификатор_доступа",
"accessKeySecret": "секретный_идентификатор_доступа",
"endpoint": "конечная_точка",
"bucket": "корзина",
"baseUrl": "базовый_URL"
}
# Получение информации о местоположении IP-адреса
# Документация: https://user.ip138.com/ip/doc
IP_PARSE_ENABLE = True
IP_PARSE_TOKEN = "IP_PARSE_TOKEN"
```4. Настройте информацию о базе данных в файле `alembic.ini` для использования в маппинге базы данных. ```python
# mysql+pymysql://имя_пользователя_базы_данных:пароль_пользователя_базы_данных@адрес_базы_данных:порт_базы_данных/имя_базы_данных
[dev]
# Разработка окружение
version_locations = %(here)s/alembic/versions_dev
sqlalchemy.url = mysql+pymysql://root:123456@127.0.0.1/kinit
[pro]
# Продакшн окружение
version_locations = %(here)s/alembic/versions_pro
sqlalchemy.url = mysql+pymysql://root:123456@127.0.0.1/kinit
Создайте базу данных
mysql> create database kinit; # Создание базы данных
mysql> use kinit; # Использование созданной базы данных
mysql> set names utf8; # Установка кодировки
Инициализация данных базы данных
# Выполнить в корневой директории проекта, предварительно создав базу данных
# Автоматически мигрирует модели в базу данных и создаст начальные данные
# Перед выполнением убедитесь, что окружение совпадает с настройками в файле settings.py
# (окружение продакшн)
python3 main.py init
# (окружение разработки)
python3 main.py init --env dev
Изменение базовых настроек проекта
Измените ключевые данные в таблице базы данных - vadmin_system_settings
# Настройки SMS от Alibaba Cloud
sms_access_key
sms_access_key_secret
sms_sign_name_1
sms_template_code_1
sms_sign_name_2
sms_template_code_2
# Настройки карт Google Maps
map_key
# Настройки WeChat Mini Programs
wx_server_app_id
wx_server_app_secret
# Настройки электронной почты
email_access
email_password
email_server
email_port
```8. Запуск
python3 main.py run
cd kinit-admin
pnpm install
pnpm run dev
pnpm run build:pro
Установка зависимостей
# Установка зависимостей
pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
# Третьи источники:
1. Источник Alibaba: https://mirrors.aliyun.com/pypi/simple/
Изменение настроек базы данных проекта
В директории application/config
development.py: окружение разработки
production.py: окружение продакшн
# Конфигурация базы данных MongoDB
# Это та же база данных, что и для интерфейса
MONGO_DB_NAME = "имя_базы_данных"
MONGO_DB_URL = f"mongodb://имя_пользователя:пароль@адрес:порт/?authSource={MONGO_DB_NAME}"
# Конфигурация базы данных Redis
# Это та же база данных, что и для интерфейса
REDIS_DB_URL = "redis://:пароль@адрес:порт/имя_базы_данных"
Запуск
python3 main.py
15020221010
Пароль: kinit2022
Получение кода
git clone https://gitee.com/ktianc/kinit.git
Изменение конфигурации проекта:
Изменение конфигурации API: Путь к файлу: kinit-api/application/settings.py
# Безопасность: не включайте отладку в продакшне!
DEBUG = False # Для продакшна должно быть False
Изменение конфигурации задач:
Путь к файлу: kinit-task/application/settings.py
# Безопасность: не включайте отладку в продакшне!
DEBUG = False # Для продакшна должно быть False
(Если база данных не установлена, этот шаг не требуется) Если у вас уже есть база данных MySQL, Redis или MongoDB, выполните следующие действия:
Создайте пользователя и базу данных в соответствующей базе данных и измените следующие параметры подключения на существующие.
Изменение конфигурации API:
Путь к файлу: kinit-api/application/config/production.py
# Конфигурация MySQL
# Документация по подключению: https://www.osgeo.cn/sqlalchemy/core/engines.html
# Формат подключения: mysql+asyncmy://имя_пользователя:пароль@адрес:порт/имя_базы_данных
SQLALCHEMY_DATABASE_URL = "mysql+asyncmy://root:123456@177.8.0.7:3306/kinit"
# Конфигурация Redis
# Формат: redis://:пароль@адрес:порт/имя_базы_данных
REDIS_DB_ENABLE = True
REDIS_DB_URL = "redis://:123456@177.8.0.5:6379/1"
# Конфигурация MongoDB
# Формат: mongodb://имя_пользователя:пароль@адрес:порт/?authSource=имя_базы_данных
MONGO_DB_ENABLE = True
MONGO_DB_NAME = "kinit"
MONGO_DB_URL = f"mongodb://kinit:123456@177.8.0.6:27017/?authSource={MONGO_DB_NAME}"
Изменение конфигурации задач Путь к файлу: `kinit-task/application/config/production.py````python
REDIS_DB_ENABLE = True REDIS_DB_URL = "redis://:123456@177.8.0.5:6379/1"
MONGO_DB_ENABLE = True MONGO_DB_NAME = "kinit" MONGO_DB_URL = f"mongodb://kinit:123456@177.8.0.6:27017/?authSource={MONGO_DB_NAME}"
3. Комментарий существующих баз данных в файле `docker-compose.yml`
4. Настройка конфигурации Aliyun OSS и интерфейса IP-разбора (опционально)
Путь к файлу: `kinit-api/application/config/production.py` ```python
# Конфигурация облачного хранилища Aliyun OSS
# AccessKey предоставляет доступ ко всем API, что очень опасно. Рекомендуется создавать и использовать пользователей RAM для доступа к API или повседневного обслуживания. Пожалуйста, перейдите в консоль управления RAM для создания пользователей RAM.
# yourEndpoint заполняется конечной точкой региона, в котором находится Bucket. Например, для Восточного Китая (Hangzhou) конечная точка заполняется как https://oss-cn-hangzhou.aliyuncs.com.
# * [accessKeyId] {String} - AccessKey, созданный в консоли управления Aliyun.
# * [accessKeySecret] {String} - AccessSecret, созданный в консоли управления Aliyun.
# * [bucket] {String} - Bucket, созданный в консоли управления или с помощью PutBucket.
# * [endpoint] {String} - Регион, в котором находится Bucket, по умолчанию oss-cn-hangzhou.
ALIYUN_OSS = {
"accessKeyId": "accessKeyId",
"accessKeySecret": "accessKeySecret",
"endpoint": "endpoint",
"bucket": "bucket",
"baseUrl": "baseUrl"
}
# Получение местоположения IP-адреса
# Документация: https://user.ip138.com/ip/doc
IP_PARSE_ENABLE = False
IP_PARSE_TOKEN = "IP_PARSE_TOKEN"
```5. Упаковка фронтенд-проекта:
```shell
cd kinit-admin
# Установка зависимостей
pnpm install
# Упаковка
pnpm run build:pro
# Запуск и создание всех контейнеров
docker-compose up -d
# Инициализация данных
docker-compose exec kinit-api python3 main.py init
# Перезапуск всех контейнеров
docker-compose restart
# Другие команды:
# Остановка всех контейнеров
docker-compose down
# Просмотр состояния всех контейнеров
docker-compose ps -a
15020221010
Пароль: kinit2022
Вы можете открыть issue или отправить Pull Request.
Pull Request:
git checkout -b feat/xxxx
git commit -am 'feat(function): add xxxxx'
git push origin feat/xxxx
pull request
Рекомендуется использовать браузер Chrome 80+
для локальной разработки
Поддерживает современные браузеры, не поддерживает IE
IE | Edge | Firefox | Chrome | Safari |
---|---|---|---|---|
не поддерживается | последние 2 версии | последние 2 версии | последние 2 версии | последние 2 версии |
Рисунок 1
Рисунок 2
Рисунок 3
Рисунок 4
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )