写点什么

Comate 分饰多角:全栈开发一个 Python 学习网站

Comate分饰多角:全栈开发一个Python学习网站

*作者:Python 私教

“人生苦短,我用 Python。十年老 Python 程序员,感谢 Comate 让我升级成了全栈工程师。”

——作者


今天,我将使用 Comate 来实现从零全栈开发一个 Python 学习网站,在此期间,Comate 一人分饰多角:产品经理、UI 设计师、架构师、项目 Leader、前端工程师、后端工程师、测试...拥有 Comate,你就拥有了一只团队。


01 产品经理 Comate:AI 重构软件开发全流程

首先,可以让 Comate 充当产品经理的角色,让它编写需求文档,以下是提示词:


Zulu 思考了一下,效率非常高,几分钟就生成好了~~



02 UI 设计师 Comate:编写 UI 设计文档

接下来,让 Comate 充当 UI 设计师角色,设计 UI 界面并编写 UI 设计文档,提示词如下:


Comate 编写文档中…过了几分钟,文档就设计好了。



03 架构师 Comate:编写前端架构设计文档

接下来让 Comate 充当架构师角色,编写架构设计文档。当前采用纯前端架构,后面可以结合 Django 框架或者 Flask 框架进行重构和升级。把提示词给 Comate,文档从编写到完成很快捷~




04 项目 Leader:制定开发计划

基础文档准备好以后,就需要进入开发阶段了~为了保证项目的有序进行,让 Comate 充当项目 Leader,制定一个详细的开发计划。提示词如下:你是一个项目 Leader,请参考 docs 目录下的文档,编写 docs/开发计划.md 文档,制定详细的开发计划。


这也是我在 Coding Agent 实践中摸索出的一个关键经验:先让模型生成详尽的开发计划,再由我来检查需求理解是否准确、任务拆分是否合理。这样不仅能提前发现问题,还能大幅提升后续代码生成的质量与效率。


Comate 开始读取 docs 下面的文档,制定开发计划,很快就编写完成啦~



05 前端工程师:按计划编写代码

终于到了编写代码的阶段了!现在,让 Comate 充当一个高级前端工程师,按照开发计划编写代码。提示词如下:你是一个高级前端工程师,请你阅读 docs 下面的文档,按照开发计划,开始开发。项目开发完成以后,要将项目运行起来,确保没有任何的错误和警告。


Comate 正在按照开发计划编写代码,让我们期待一下成果~


一顿操作猛如虎,终于在经过了十几分钟以后项目生成完毕了


在 index.html 上右键,在服务器中预览


经过一番努力之后,终于把界面给设计出来了,效果如下:


06 架构师 Comate:重构和升级

在前端版本基础上,让 Comate 基于 Flask(Flask 是一个用 Python 编写的轻量级 Web 框架,简单说就是帮你快速搭建网站的"工具箱")+Bootstrap(Bootstrap 是一个前端框架,简单说就是帮你快速做出漂亮网页的"装修工具包")重构了一下整个项目,效果如下,感觉美观又清晰!




07 后端工程师 Comate:设计数据库

现在已经有了 Flask(使用 Python 作为后端编程语言),作为一个网站,怎么能没有数据库呢?继续让 Comate 优化项目,采用 SQLAlchemy 作为数据库交互框架,为项目增加数据库功能。提示词如下:


Comate 开始设计数据库并修改代码:


最终目录结构如下:


模型设计代码如下:

from flask_sqlalchemy import SQLAlchemyfrom datetime import datetime
db = SQLAlchemy()
class Course(db.Model): """课程模型""" __tablename__ = 'courses' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) description = db.Column(db.Text, nullable=False) level = db.Column(db.String(20), nullable=False) # 初级、中级、高级 duration = db.Column(db.Integer, nullable=False) # 课程时长(小时) price = db.Column(db.Float, default=0.0) # 价格,0表示免费 icon = db.Column(db.String(50), nullable=False) # FontAwesome图标类名 is_featured = db.Column(db.Boolean, default=False) # 是否为热门课程 created_at = db.Column(db.DateTime, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) def __repr__(self): return f'<Course {self.title}>' def to_dict(self): return { 'id': self.id, 'title': self.title, 'description': self.description, 'level': self.level, 'duration': self.duration, 'price': self.price, 'icon': self.icon, 'is_featured': self.is_featured, 'created_at': self.created_at, 'updated_at': self.updated_at }
class Feature(db.Model): """特色功能模型""" __tablename__ = 'features' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) description = db.Column(db.Text, nullable=False) icon = db.Column(db.String(50), nullable=False) # FontAwesome图标类名 order = db.Column(db.Integer, default=0) # 显示顺序 is_active = db.Column(db.Boolean, default=True) created_at = db.Column(db.DateTime, default=datetime.utcnow) def __repr__(self): return f'<Feature {self.title}>' def to_dict(self): return { 'id': self.id, 'title': self.title, 'description': self.description, 'icon': self.icon, 'order': self.order, 'is_active': self.is_active, 'created_at': self.created_at }
class Statistic(db.Model): """统计数据模型""" __tablename__ = 'statistics' id = db.Column(db.Integer, primary_key=True) label = db.Column(db.String(50), nullable=False) # 统计项目名称 value = db.Column(db.String(20), nullable=False) # 统计数值 icon = db.Column(db.String(50), nullable=False) # FontAwesome图标类名 order = db.Column(db.Integer, default=0) # 显示顺序 is_active = db.Column(db.Boolean, default=True) created_at = db.Column(db.DateTime, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) def __repr__(self): return f'<Statistic {self.label}: {self.value}>' def to_dict(self): return { 'id': self.id, 'label': self.label, 'value': self.value, 'icon': self.icon, 'order': self.order, 'is_active': self.is_active, 'created_at': self.created_at, 'updated_at': self.updated_at }
class User(db.Model): """用户模型""" __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) password_hash = db.Column(db.String(128)) full_name = db.Column(db.String(100)) is_active = db.Column(db.Boolean, default=True) created_at = db.Column(db.DateTime, default=datetime.utcnow) last_login = db.Column(db.DateTime) def __repr__(self): return f'<User {self.username}>' def to_dict(self): return { 'id': self.id, 'username': self.username, 'email': self.email, 'full_name': self.full_name, 'is_active': self.is_active, 'created_at': self.created_at, 'last_login': self.last_login }
class ContactMessage(db.Model): """联系消息模型""" __tablename__ = 'contact_messages' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), nullable=False) email = db.Column(db.String(120), nullable=False) subject = db.Column(db.String(200), nullable=False) message = db.Column(db.Text, nullable=False) is_read = db.Column(db.Boolean, default=False) created_at = db.Column(db.DateTime, default=datetime.utcnow) def __repr__(self): return f'<ContactMessage from {self.name}>' def to_dict(self): return { 'id': self.id, 'name': self.name, 'email': self.email, 'subject': self.subject, 'message': self.message, 'is_read': self.is_read, 'created_at': self.created_at }
复制代码


初始化数据的代码如下:

from app import appfrom models import db, Course, Feature, Statistic, User, ContactMessage
def init_database(): """初始化数据库""" with app.app_context(): # 创建所有表 db.create_all() print("数据库表创建成功!") # 填充测试数据 populate_test_data() print("测试数据填充完成!")
def populate_test_data(): """填充测试数据""" # 清空现有数据 db.session.query(Course).delete() db.session.query(Feature).delete() db.session.query(Statistic).delete() db.session.query(User).delete() db.session.query(ContactMessage).delete() # 添加课程数据 courses = [ Course( title="Python基础入门", description="从零开始学习Python编程语言基础知识,包括语法、数据类型、控制结构等", level="初级", duration=20, price=0.0, icon="fas fa-python", is_featured=True ), Course( title="数据分析实战", description="使用Python进行数据分析和可视化,掌握pandas、numpy、matplotlib等库", level="中级", duration=30, price=299.0, icon="fas fa-chart-line", is_featured=True ), Course( title="Web开发进阶", description="使用Flask/Django构建现代Web应用,包括前后端开发技术", level="高级", duration=40, price=499.0, icon="fas fa-globe", is_featured=True ), Course( title="机器学习基础", description="学习机器学习算法和应用,使用scikit-learn进行实战项目", level="中级", duration=35, price=399.0, icon="fas fa-robot", is_featured=False ), Course( title="爬虫技术实战", description="掌握网络爬虫技术,学习requests、BeautifulSoup、Scrapy等工具", level="中级", duration=25, price=199.0, icon="fas fa-spider", is_featured=False ), Course( title="自动化测试", description="学习Python自动化测试框架,包括unittest、pytest、selenium等", level="中级", duration=28, price=249.0, icon="fas fa-cogs", is_featured=False ) ] for course in courses: db.session.add(course) # 添加特色功能数据 features = [ Feature( title="系统化学习", description="从基础语法到高级应用,循序渐进的学习路径", icon="fas fa-graduation-cap", order=1 ), Feature( title="实战项目", description="通过真实项目练习,提升实际编程能力", icon="fas fa-code", order=2 ), Feature( title="社区支持", description="活跃的学习社区,随时获得帮助和交流", icon="fas fa-users", order=3 ) ] for feature in features: db.session.add(feature) # 添加统计数据 statistics = [ Statistic( label="注册学员", value="10,000+", icon="fas fa-users", order=1 ), Statistic( label="精品课程", value="50+", icon="fas fa-book", order=2 ), Statistic( label="完成率", value="95%", icon="fas fa-trophy", order=3 ), Statistic( label="平均评分", value="4.9", icon="fas fa-star", order=4 ) ] for stat in statistics: db.session.add(stat) # 添加测试用户数据 users = [ User( username="admin", email="admin@pythonlearn.com", full_name="管理员", password_hash="hashed_password_here" ), User( username="student1", email="student1@example.com", full_name="张三", password_hash="hashed_password_here" ), User( username="student2", email="student2@example.com", full_name="李四", password_hash="hashed_password_here" ) ] for user in users: db.session.add(user) # 添加联系消息测试数据 messages = [ ContactMessage( name="王五", email="wangwu@example.com", subject="课程咨询", message="请问Python基础入门课程适合完全没有编程经验的人学习吗?" ), ContactMessage( name="赵六", email="zhaoliu@example.com", subject="技术支持", message="在学习过程中遇到了一些问题,希望能得到帮助。" ) ] for message in messages: db.session.add(message) # 提交所有更改 db.session.commit() print("测试数据添加完成!")
if __name__ == '__main__': init_database()
复制代码

08 测试工程师 Comate:最终测试和收尾

最终效果如下:


界面没啥变化,但项目数据已经是走的数据库啦~


经过实测,Comate 的整体能力还是非常棒的,从产品设计到上线全流程全覆盖,Comate 能补足个人在经验上的短板,一人可分饰多角、无压力上手全栈开发;从需求到上线只需几十分钟,还能灵活扩展框架和语言,满足不同层次的项目需求——无论是项目初始化启动,还是个人全栈开发,Comate 都是理想拍档。


一键下载 Comate,实现自己的第一次全栈开发吧~

下载途径一:百度搜索“文心快码”,官网下载 Comate AI IDE;

下载途径二:VS Code 或者 Jetbrains 系列 IDE 搜索并下载文心快码插件。

用户头像

码随心动,快人一步,更懂你的智能代码助手 2025-06-18 加入

基于文心大模型,结合百度积累多年的编程现场大数据和外部优秀开源数据,为你生成更符合实际研发场景的优质代码。提升编码效率,释放“十倍“软件生产力。

评论

发布
暂无评论
Comate分饰多角:全栈开发一个Python学习网站_Python_Comate编码助手_InfoQ写作社区