Python中如何使用Flask开发内部资产管理系统?
初用 python 想开发一个资产管理系统,想用 python 来开发,后台开发用 python 来开发
想前后端分离,前端人员一枚,后端人员一枚。
如果我使用 python 的 flask 框架,是不是意味着就得用 jinja2 前端框架?代码前端代码还得我来写呢?
我只想负责后端的接口开发就好了,传给开发,让前端自己负责.
大家有什么好的开发建议吗?
Python中如何使用Flask开发内部资产管理系统?
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 返回格式就完事了。

