Python中如何使用Flask开发内部资产管理系统?

初用 python 想开发一个资产管理系统,想用 python 来开发,后台开发用 python 来开发

想前后端分离,前端人员一枚,后端人员一枚。

如果我使用 python 的 flask 框架,是不是意味着就得用 jinja2 前端框架?代码前端代码还得我来写呢?

我只想负责后端的接口开发就好了,传给开发,让前端自己负责.

大家有什么好的开发建议吗?


Python中如何使用Flask开发内部资产管理系统?
16 回复

jinja2 不是前端框架

好的建议是用 Django 不要用 flask。
django 自带用户管理,对前端要求不高的话 djangorestframework 自带的接口管理页面也足够了,比 flask 自己造轮子快多了,你只要写表就行了。


核心思路: Flask做后端API + 数据库存数据 + 前端页面展示,权限控制是关键。

1. 基础项目结构

asset_management/
├── app.py              # 主程序入口
├── models.py           # 数据库模型
├── routes/             # 路由蓝图
│   ├── auth.py        # 登录认证
│   ├── assets.py      # 资产CRUD接口
│   └── __init__.py
├── templates/          # Jinja2模板
│   ├── base.html
│   ├── dashboard.html
│   └── asset_list.html
└── requirements.txt    # 依赖包

2. 核心代码示例

# app.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///assets.db'
app.config['SECRET_KEY'] = 'your-secret-key-here'

db = SQLAlchemy(app)
login_manager = LoginManager(app)

# 注册蓝图
from routes.assets import asset_bp
from routes.auth import auth_bp
app.register_blueprint(asset_bp, url_prefix='/api/assets')
app.register_blueprint(auth_bp, url_prefix='/auth')

# models.py
class Asset(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    category = db.Column(db.String(50))  # 电脑/服务器/软件等
    sn = db.Column(db.String(50), unique=True)  # 序列号
    owner = db.Column(db.String(50))  # 使用人
    purchase_date = db.Column(db.Date)
    status = db.Column(db.String(20))  # 在用/闲置/报废

# routes/assets.py
from flask import Blueprint, request, jsonify
from models import db, Asset

asset_bp = Blueprint('assets', __name__)

@asset_bp.route('/', methods=['GET'])
def get_assets():
    assets = Asset.query.all()
    return jsonify([{
        'id': a.id,
        'name': a.name,
        'sn': a.sn,
        'status': a.status
    } for a in assets])

@asset_bp.route('/', methods=['POST'])
def add_asset():
    data = request.json
    new_asset = Asset(
        name=data['name'],
        sn=data['sn'],
        category=data.get('category', '其他'),
        status='在用'
    )
    db.session.add(new_asset)
    db.session.commit()
    return jsonify({'id': new_asset.id}), 201

3. 关键实现要点

  • flask-login做用户认证,区分管理员和普通用户权限
  • 资产字段根据实际需求扩展:采购价格、位置、供应商、维保信息等
  • 文件上传功能保存采购合同/保修卡扫描件
  • 添加操作日志记录谁在什么时候修改了什么
  • 用SQLAlchemy做数据库迁移(flask-migrate)

4. 快速启动步骤

pip install flask flask-sqlalchemy flask-login
python app.py  # 初始化数据库后访问 http://localhost:5000

总结: 先搭最小可用版本再迭代功能。

如果有前端,你只写接口,那就用 flask,返回的时候不要套模版,直接返 json 就行了,比 django 简单。

如果有独立的前端开发人员,你开放 json api (就像上面那个老哥说的),然后可以让前端用他熟悉的框架做事情。

anyway,其实如果是这个 setting,甚至可以不用 flask。用 aiohttp 也没啥不方便的。

比如我这边的 aiohttp + vue 的一个小项目。

后端: https://github.com/haowen-xu/mlstorage-server/tree/develop/mlstorage_server
前端: https://github.com/haowen-xu/mlstorage-server/tree/develop/mlstorage_server/frontend

我现在也是在写接口,通过返回 json 串,前端用他熟悉的前端框架。谢谢回复。

嗯嗯,是的,同样的思路,感谢

有一个开源的资产管理系统 ralph 供参考.

jinja2 是个模板系统,是在后端动态生成网页用的,如果有独立的前端人员,那么这个不是必须的,前端有自己的框架来实现诸如 header,footer,navabar 之类的东西。

前后端分离的情况可以考虑一下用 restful,
http://www.pythondoc.com/flask-restful/first.html

至于使用 django 还是 flask 这个看个人爱好和基础,哪个熟悉用哪个。从直接撸东西的方便性来说,django 要稍好,从灵活性来说 flask 稍好。现在从 github 上的统计来看使用这两个框架的项目数量基本上五五开。

用 django admin
快速出货

有没有小伙伴在广州发展的?广州天河东圃诚聘 python 组长,15-22K,周末双休,欢迎前来咨询。V 信:cf472436288

觉得还是要 django 好些,flask 后台开发比较快,前后端可以快速成型,不过到后期随着规模越来越大,管理越来越精细,比如权限控制,页面管理等内容 flask 要相对比 django 弱些。 根据楼主提到的“资产管理系统”使用场景,用 django 的 admin 要方便很多。另外 jinja2 只是个模板并不是前端框架。

除非你 flask 用得很熟练了,不然这种项目的开发还是推荐 Django。有专职的前后端分工的话,Django + DRF + 前端框架(比如:Vue )就足够了。另外,虽然 Django admin 的用户管理省事,但是当你要自定义的时候还是有点麻烦的,如果后台要高度定制,还是建议用 DRF+前端框架

建议使用 DRF
比起 flask 自己自己造轮子要快一点

django,开发快速

Django + restframework 一把梭,前端分离还用啥 Jinja2,定义好 Json 返回格式就完事了。

回到顶部