本文采用轻量开源技术栈搭建,不需要复杂后端基础,跟着步骤操作就能直接落地,你只需要完成两步环境配置:
直接从Python官方下载对应系统安装包:https://www.python.org/downloads/,安装过程中必须勾选「Add Python to PATH」选项,否则后续命令无法执行。安装完成后打开命令提示符输入python --version,输出版本号即安装成功。
打开命令提示符,直接执行以下命令完成依赖安装:
``` pip install flask flask-sqlalchemy openpyxl ```国内网络下载慢可添加清华镜像,执行:pip install flask flask-sqlalchemy openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple
整个项目只有4个核心文件,你可以手动创建以下文件和文件夹,也可以通过命令行创建:
``` tm-file-manager/ ├── app.py 主程序入口 ├── models.py 数据模型定义 ├── templates/ │ └── index.html 前端操作页面 └── static/ └── uploads/ 存储上传的商标附件 ```创建完成后,注意uploads文件夹需要保证可写入权限,Windows系统默认满足,Linux系统执行chmod 755 tm-file-manager/static/uploads即可。
所有代码都可以直接复制粘贴,不需要修改默认配置,以下是每个文件的完整内容:
该文件定义商标档案的核心数据结构,直接复制全部内容:
``` from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class TrademarkFile(db.Model): id = db.Column(db.Integer, primary_key=True) tm_num = db.Column(db.String(50), nullable=False, index=True) applicant = db.Column(db.String(200), nullable=False) apply_date = db.Column(db.Date, nullable=False) tm_class = db.Column(db.Integer, nullable=False) status = db.Column(db.String(20), nullable=False, default="待审核") attachment_path = db.Column(db.String(200)) create_time = db.Column(db.DateTime, server_default=db.func.now()) ```
该文件包含所有业务逻辑,直接复制:
``` from flask import Flask, render_template, request, redirect, send_file from models import db, TrademarkFile import os from openpyxl import Workbook app = Flask(__name__) BASE_DIR = os.path.abspath(os.path.dirname(__file__)) app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{os.path.join(BASE_DIR, "tm_files.db")}' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['UPLOAD_FOLDER'] = os.path.join(BASE_DIR, 'static', 'uploads') app.config['MAX_CONTENT_LENGTH'] = 10 1024 1024 db.init_app(app) with app.app_context(): db.create_all() @app.route('/') def index(): keyword = request.args.get('keyword', '') if keyword: files = TrademarkFile.query.filter(TrademarkFile.tm_num.contains(keyword) | TrademarkFile.applicant.contains(keyword)).all() else: files = TrademarkFile.query.order_by(TrademarkFile.create_time.desc()).all() return render_template('index.html', files=files, keyword=keyword) @app.route('/add', methods=['POST']) def add(): tm_num = request.form.get('tm_num') applicant = request.form.get('applicant') apply_date = request.form.get('apply_date') tm_class = int(request.form.get('tm_class')) status = request.form.get('status') attachment = request.files.get('attachment') file_path = None if attachment and attachment.filename: filename = f"{tm_num}_{attachment.filename}" save_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) attachment.save(save_path) file_path = f"/static/uploads/{filename}" new_file = TrademarkFile( tm_num=tm_num, applicant=applicant, apply_date=apply_date, tm_class=tm_class, status=status, attachment_path=file_path ) db.session.add(new_file) db.session.commit() return redirect('/') @app.route('/delete/将以下内容放到templates文件夹下的index.html中,直接复制:
```| 商标注册号 | 申请人 | 申请日期 | 商标类别 | 状态 | 附件 | 操作 |
|---|---|---|---|---|---|---|
| {{file.tm_num}} | {{file.applicant}} | {{file.apply_date}} | {{file.tm_class}} | {{file.status}} | {% if file.attachment_path %}查看附件{% else %}无{% endif %} | 删除 |
完成代码编写后,打开命令提示符进入项目根目录,执行以下命令启动系统:
``` python app.py ```启动成功后,打开浏览器输入地址:http://localhost:5000,即可看到操作界面,可测试核心功能:
如果需要供团队多人远程使用,只需要做两个简单调整:
本地SQLite可支持千级以内档案管理,档案量超过1万条时,先执行pip install pymysql,再修改app.py中的数据库连接配置为:
执行pip install gunicorn安装生产级服务器,然后在项目根目录执行:
绑定80端口后,直接通过服务器公网IP即可访问,整个系统部署完成。