Giter VIP home page Giter VIP logo

fastapi-naive-admin's Introduction

FastAPI Naive Admin

fastapi-naive-admin 是一个基于python3+fastapi框架的权限控制系统,集合了常见的权限控制示例。前端使用了最新的 Vue3、Vite、Naive UI、TypeScript、Pinia、Tailwindcss 等主流技术开发。 后端使用python3、fastapi、tortoise-orm等主流技术开发,拥有完整的API文档。 您可基于此项目基础上专注开发您的业务模块,希望此项目对您有帮助!

功能列表

  • 前端国际化
  • 前端多主题
  • 动态路由(支持内嵌、外链)
  • 按钮权限控制
  • JWT无感刷新
  • RBAC权限控制
  • LDAP集成
  • MFA登录
  • IP黑白名单校验
  • 邮件通知
  • ......

前端代码

fastapi-naive-web

预览地址

fastapi-naive-admin

后端开发环境安装

本地开发环境

  • python 3.12.2
  • poetry 1.8.2
  • mysql 8.3.0 (docker image mysql:latest)
  • redis 7.2.4 (docker image redis:latest)

安装依赖

- 使用poetry

poetry install

- 使用pip

pip install -r requirements.txt

配置文件 && 初始化sql

- 配置文件

将config-template.yaml copy未config.yaml 按照里面配置的注释修改即可
或者可以使用环境变量添加 具体请查看 utils/config.py

- 初始化数据库(项目根目录base.sql)

mysql -uroot -proot123 < base.sql

- 默认账户密码
admin/Admin@123

启动

uvicorn main:app --reload

or

poetry run uvicorn main:app --reload

前端部署开发环境安装

本地开发环境

  • node.js v20.11.1
  • npm 10.4.0

安装依赖

npm i

启动

npm run dev

打包

npm run build

预览截图

image image image

fastapi-naive-admin's People

Contributors

cary997 avatar

Stargazers

dajun avatar mo xiaoying avatar  avatar  avatar WanpengZhao avatar  avatar  avatar

Watchers

ChunFuWu avatar  avatar  avatar

fastapi-naive-admin's Issues

Tortoise ORM 使用await提示数据库未连接

修改点

  1. 将数据库配置修改成自己的

  2. routes.py,路由配置只使用自己的

  3. models.init.py,只引入了自己的数据模型

  4. 增加自己的api
    `@router.get('/get_user_info', summary="获取用户信息", response_model=users_schema.UserGetResponse)
    async def get_user_info(email: str=Query(None)):
    query = {}
    if email:
    query.setdefault('email', email)

    try:
    # 查询结果
    query_data = await UserInfo.get_or_none(**query)
    #
    user = await users_schema.UserInfoResult.from_tortoise_orm(query_data)
    user_dict = user.model_dump()
    # #
    logger.info(f"获取用户信息: {user_dict}")
    except Exception as e:
    logger.error(e)
    raise HTTPException(status_code=500, detail="Database connection error")

    if not query_data:
    return success(message="查询结果为空!")
    else:
    return success(data=[])`
    请求接口提示数据库未连接,以下是报错信息
    ERROR | apis.solvely.solvely_api:get_user_info:47 - Can't connect to MySQL server: 后面是配置信息

如果api里自己在配置一个数据库连接是可以正常连接并且请求查询成功
另外如果是启动未修改的版本,就可以正常走自带的请求,请问是哪里的配置没有进行同步修改

希望添加多数据库支持

在实际业务中使用,内部查询都有自己的数据库,但目前该项目不支持多数据库,希望可以修改extend/datebase/init.py中Route的解析,以达到在模型中通过Meta 自定义app来实现多数据库支持,同时搭配Web前端进行渲染和权限配置

示例如下:

class Router:
    @staticmethod
    def db_for_read(model: Type[Model]):
        if hasattr(model._meta, "app"):
            return model._meta.app
        return "slave"

    @staticmethod
    def db_for_write(model: Type[Model]):
        if hasattr(model._meta, "app"):
            return model._meta.app
        return "master"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.