# python_final **Repository Path**: dont_have_time/python_final ## Basic Information - **Project Name**: python_final - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-01-20 - **Last Updated**: 2021-01-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Python 期末项目 ## 一、项目介绍 ### 1. 项目标题与简介 项目标题:基于flask的订单管理系统 - [易管](http://118.89.151.118/admin/login) 项目简介:‘易管’ 是基于python的flask框架作为后端处理,结合前端bootstr和html、js、css进行前端的页面展示,实现了注册登录、订单录入、订单信息填写、图片上传、密码修改、订单结算、物流查询等功能的订单管理系统。 ![功能框架结构图](images/功能框架结构图.png) ### 2. 问题表述 **用户画像**:该项目主要用于跨境电商商家的订单管理。 **用户使用场景**:面对众多的客户订单数据,单靠excel来进行存储导致数据容易丢失,并且订单的管理难度会加大。为了减轻商家管理数据的难度,该系统能大大降低用户的工作量。 **用户任务**:用户录入订单的各个属性数据提交保存至数据库,通过查询相应的订单对订单进行管理操作。 **用户痛点**:面对众多的客户订单数据,单靠excel来进行存储导致数据容易丢失造成巨大损失,以及数据管理人员的操作不规范导致数据管理困难。 **产品益点**:能大大提高商家的订单数据管理能力、轻松对每个订单情况了如指掌,有助于商家开展工作计划。 --- ## 二、解决方案 ### 1. 项目规划与知识点 订单管理系统实现了注册登陆、订单的录入、订单信息的填写、图片上传、密码修改、订单结算等功能,以下是相关知识点: ![知识图谱](images/功能知识图谱.png) ### 2. 编程功能的基本描述 主要介绍一下登陆、注册、订单录入、物流查询、图片上传、以及相关的模型数据库: - 登陆界面 ```html

登录

{{errmsg}}

``` - 登陆处理 ```python @admin_blue.route('/login', methods=['GET', 'POST']) @user_login_data def login(): if request.method == 'GET': return render_template('admin/login.html') username = request.form.get('username') password = request.form.get('password') if not all([username, password]): return render_template('admin/login.html', errmsg='请输入账户密码') user = User.query.filter(User.mobile == username).first() if not user: return render_template('admin/login.html', errmsg='用户不存在') if not user.check_password(password): return render_template('admin/login.html', errmsg='请输入正确的密码') session['user_id'] = user.id session['user_mobile'] = user.mobile session['user_is_admin'] = user.is_admin return render_template('admin/index.html',user=user) ``` - 注册页面 ```html

注册1

{{errmsg}}

返回登陆
``` - 注册处理 ```python @admin_blue.route('/reginst', methods=['GET', 'POST']) @user_login_data def reginst(): if request.method=='GET': return render_template('admin/user_add_new.html',message={'r':'必填','n':'必填','m':'必填'}) nick_name=request.form.get('nick_name') mobile=request.form.get('mobile') password=request.form.get('password') repassword = request.form.get('repassword') action = request.form.get('action') reg = '^1(3[0-9]|4[5,7]|5[0,1,2,3,5,6,7,8,9]|6[2,5,6,7]|7[0,1,7,8]|8[0-9]|9[1,8,9])\d{8}$' print(nick_name,mobile,password,repassword) if not all([nick_name,mobile,password,repassword]): return render_template('admin/user_add_new.html',message={'r':'请填写所有信息','n':'必填','m':'必填'}) elif len(mobile)!=11: return render_template('admin/user_add_new.html',message={'m':'请输入正确的手机号','n':'必填','r':'必填'}) elif password!=repassword: return render_template('admin/user_add_new.html',message={'r':'两次密码不一样','m':'必填','n':'必填'}) else: u=User.query.filter(User.nick_name==nick_name).first() u1=User.query.filter(User.mobile==mobile).first() if u: return render_template('admin/user_add_new.html',message={'n':'该用户名已被注册过','m':'必填','r':'必填'}) if u1: return render_template('admin/user_add_new.html', message={'m':'该手机已被注册过','n':'必填','r':'必填'}) user=User() if action=='1': user.is_admin=1 elif action=='2': user.is_admin = 2 else: user.is_admin = 0 user.mobile = mobile user.nick_name = nick_name user.password = password db.session.add(user) db.session.commit() return render_template('admin/user_add_new.html',message={'m':'必填','n':'必填','r':'用户添加成功!'}) ``` - 订单录入 ```html

订单录入

``` - 图片上传 ```python item_picture=request.files.get('item_picture') path=os.path.join(path1,fn+item_picture.filename) item_picture.save(path) ``` - 数据库模型:其中定义了数据库和相应的表字段信息。 ```python class User(BaseModel, db.Model): __tablename__ = "info_user" _id = db.Column(db.Integer, primary_key=True) nick_name = db.Column(db.String(32), unique=True, nullable=False) password_hash = db.Column(db.String(128), nullable=False) mobile = db.Column(db.String(11), unique=True, nullable=False) avatar_url = db.Column(db.String(256)) ``` 知识点 | HTML表单、HTTP 请求 | 条件判断语句、 for 循环语句 | API、字典、列表 | 自定义模块的使用 | 数据库 | Flask第三方模块的使用 ---|---|---|---|---|---|--- 学习成本(天) | 1.5 | 2 | 3 | 1 | 3 | 2 应用比例 | 15% | 25% | 15% | 10% | 20% | 15% ### 3. 云端项目部署的基本描述 #### 3.1 页面链接与页面功能介绍 进行了腾讯云服务器的部署 - 项目-[易管](http://118.89.151.118/admin/login) **主要功能** - [登陆](http://118.89.151.118/admin/login) - [注册](http://118.89.151.118/admin/regiest) - [订单录入](http://118.89.151.118/admin/add_order) - [订单总览](http://118.89.151.118/admin/user_count) - [所有订单](http://118.89.151.118/admin/news_review) - [今日新增](http://118.89.151.118/admin/add_new) - [待上评](http://118.89.151.118/admin/dsp) - [待结账](http://118.89.151.118/admin/djz) - [已结账](http://118.89.151.118/admin/yjz) - [服务商结算](http://118.89.151.118/admin/fws_js) - [密码修改](http://118.89.151.118/admin/password_reset) - [订单查看](http://118.89.151.118/admin/order_info?order_id=1) - [退出登陆](http://118.89.151.118/admin/logout) #### 3.2 数据流程图 ![数据流程图](images/数据流程图.png) #### 3.3 云端功能 系统实现了登陆注册、订单的录入、订单信息的填写、图片上传、密码修改、订单结算、物流查询等功能,且所有数据都保存于独立数据库mysql。 #### 3.4 部署心得 1. 项目本地开发时,静态文件的路径有些是localhost本地路径,但是当在云服务器部署项目的时候,路径发生了改变,因此界面的图片显示不处理,经过后面排查才发现,因此写项目的时候不要用绝对路径。 2. 云服务器的自带python版本为2.7.5,因此需要对python进行[升级](https://www.cnblogs.com/zhongyehai/p/10444074.html),当python3环境安装好之后,pip安装第三方库时候出现了没有ctype的错误,经过百度发现3.7版本需要一个新的包libffi-devel,安装此包之后再次进行编译安装即可:yum install libffi-devel -y ## 三、学习/实践心得总结及感谢 本学期学习了《python语言》这门课程,第一次正式地接触学习python的编程语言,课程越进行都后面越让我明白python的学习不能仅仅停留在课堂,而更需要在课后花费心思去学习。 这次的flask项目制作,让我学到很多关于框架的知识,这让我更进一步地了解了开发一个项目的流程和大体的逻辑。过程中遇到了很多不同的问题,有的是不懂,有的是一些细节方面没注意。为了解决问题,我借助了开源社区的资源,也寻求了同学们的帮助,这让我解决了很多之前没见到过的问题,也学会了解决问题的办法,这是我认为本次项目最大的收获。面对编程出现的问题,首先不能逃避而要去仔细观察,同时查阅借助已有的资料,主动解决问题。 感谢本学期游鸽、许智超老师的教导,也感谢同学们对我的代码问题帮助,感谢开源社区提供的参考资料。 参考链接: - [订单管理系统(OMS)](https://baike.baidu.com/item/%E8%AE%A2%E5%8D%95%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F/3023138?fr=aladdin) - [关于订单管理系统(OMS),你需要知道这些](http://www.woshipm.com/pd/4149511.html) - [后台系统:订单管理](http://www.woshipm.com/pd/1989604.html) - [使用云端服务器 部署步骤](https://www.jianshu.com/p/54eef7579907) - [使用flask实现简单的注册登录](https://blog.csdn.net/qq_42816766/article/details/101672761) - [Bootstrap起步](https://v3.bootcss.com/getting-started/) - [Python 四大主流 Web 编程框架](https://www.cnblogs.com/an-wen/p/11330834.html) - [人人都是产品经理](http://www.woshipm.com/) - [FLASK数据库模型](https://blog.csdn.net/pdcfighting/article/details/109088767) - [Flask上传本地图片并在页面上显示](https://blog.csdn.net/dcrmg/article/details/81987808) - [后台系统界面设计示例](https://zhuanlan.zhihu.com/p/108970529) - [bannngo的经验文档](https://gitee.com/bannngo/python_learning/tree/master/final_project) - [Flask 微型Python框架](https://www.oschina.net/p/flask?hmsr=aladdin1e1) - [Flask 技术文档](https://dormousehole.readthedocs.io/en/latest/) - [零基础玩转Python_Flask](https://www.bilibili.com/video/BV17z4y1X7UZ?from=search&seid=4396158331539989929) - [Flask实战项目教程](https://www.bilibili.com/video/BV1jx411R73z?from=search&seid=4396158331539989929) - [flask框架+mysql数据库](https://blog.csdn.net/xun527/article/details/79435421) - [Flask的设计思路](https://www.jianshu.com/p/a986b8ba057c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation) - [CSS 教程](https://www.runoob.com/css/css-tutorial.html) --------------- 独特有效外连URL:20个