本项目前端采用vue-cli的脚手架,后端采用Flask的Web框架。项目通过完成用户管理、权限管理、商品管理、订单管理、统计管理等功能,综合了前后端的知识,希望使大家都能受益。

1、使用到的技术如下所示。

前端技术:

  • Vue              前端框架
  • Element-UI        UI框架
  • Axios              发送请求
  • Echarts        绘制图表

后端技术:

  • Python主流语言
  • flask  web框架
  • MySQL存储主要数据
  • Redis存储缓存数据

2、项目需求

3、vscode创建flask基本框架。

vscode可以网上下载安装,也可以可以关注公众号:呆呆的clearlie,回复:vscode即可下载。

打开VSCode,创建一个新的文件夹,命名为flask_shop

在python控制台中创建虚拟环境:mkvirtualenv  shop_env。将环境切换为虚拟环境,在这里可能会出现相关bug,可参考:https://www.cnblogs.com/clearlie/p/13186447.html

切换到虚拟环境后,在控制台输入:pip install flask 安装flask框架。

在flask_shop文件夹下面创建一个manager.py文件,在文件中输入以下代码。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
return "hello world" if __name__ == "__main__":
app.run()

运行该文件夹,将网址输入到浏览器中,看到"hello world"输出的结果,说明一切准备就绪,可以进行接下来的操作。

4、数据库参数的配置。

我们配置的是MYSQL数据库,其连接方式如下:

from flask import Flask
import os app = Flask(__name__) class Config:
# 配置MySQL参数
MYSQL_DIALECT = 'mysql'
MYSQL_DIRVER = 'pysql'
MYSQL_NAME = 'root'
MYSQL_PWD = ""
MYSQL_HOST = 'localhost'
MYSQL_PORT = ''
MYSQL_DB = 'shop_env'
MYSQL_CHARSET = 'utf8mb4' SQLALCHEMY_DATABASE_URI = f'{MYSQL_DIALECT}+{MYSQL_DIRVER}://{MYSQL_NAME}:{MYSQL_PWD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DB}?charset={MYSQL_CHARSET}'
SQLALCHEMY_TRACK_MODIFICATIONS = True # 应用于加密
SECRET_KEY = os.urandom(16)
DEBUG = True app.config_from_object(Config) @app.route("/") def index():
return "hello world" if __name__ == "__main__":
app.run()

5、安装基本的flask插件。

在控制台输入以下命令安装,同时初始化数据库。

pip install flask_sqlalchemy

pip install flask_script

pip isntall flask_migrate

在manager.py文件中导入相关的插件函数,并进行初始化,新增代码如下:

from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager app = Flask(__name__) class Config:
  ...
app.config.from_object(Config) db = SQLAlchemy(app) manager = Manager(app)
Migrate(app, db)
manager.add_command('db', MigrateCommand)

...

6、拆分项目结构

接下来我们将manager.py里的内容进行拆分,拆分代码的目的在于是不同的代码位于不同的文件里,各司其职。

在FLASK_SHOP新建一个flask_shop的python包和config的python文件,在flask_shop下再建一个user的python包和视图view.py文件,python包即含一个__init__.py初始化文件的文件夹。其相关文件如下:

把之前的数据库配置代码移到配置文件config.py里,如下所示:

import os

class Config:
# 配置MySQL参数
MYSQL_DIALECT = 'mysql'
MYSQL_DIRVER = 'pysql'
MYSQL_NAME = 'root'
MYSQL_PWD = ""
MYSQL_HOST = 'localhost'
MYSQL_PORT = ''
MYSQL_DB = 'shop_env'
MYSQL_CHARSET = 'utf8mb4' SQLALCHEMY_DATABASE_URI = f'{MYSQL_DIALECT}+{MYSQL_DIRVER}://{MYSQL_NAME}:{MYSQL_PWD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DB}?charset={MYSQL_CHARSET}'
SQLALCHEMY_TRACK_MODIFICATIONS = True # 应用于加密
SECRET_KEY = os.urandom(16) # 定义一个开发模式的类
class DevelopmentConfig(Config):
DEBUG = True class ProductionConfig(Config):
pass config_map = {
"develop": DevelopmentConfig,
"product": ProductionConfig,
}

在配置文件中我们新增了两个类,一个开发模式,一个生产模式,同时使用config_map字典进行存储。

manager.py的文件主要用于撰写控制操作程序,代码更新如下:

from flask_shop import create_app
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
from flask_shop import db app = create_app("develop") manager = Manager(app)
Migrate(app, db)
manager.add_command('db', MigrateCommand) if __name__ == "__main__":
app.run()

flask_shop初始化文件下的代码如下:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import config_map db = SQLAlchemy() def create_app(config_name):
app = Flask(__name__)
obj = config_map.get(config_name)
app.config.from_object(obj)
db.init_app(app) # 引入注册蓝图
from flask_shop.user import user
app.register_blueprint(user) return app if __name__ == "__main__":
app.run()

user的初始化文件如下:

from flask import Blueprint

user = Blueprint('user', __name__,  url_prefix='/user')
from . import view

视图函数view.py的代码如下:

from flask_shop.user import user

@user.route("/")
def user():
return "hello, boy!!!"

运行manager.py文件,在浏览器输入http://127.0.0.1:5000/user/,可以看到以下结果:

现在flask框架的基础配置我们已经完成了,接下来就是相关的功能开发。

01-flask电商项目开发基础配置的更多相关文章

  1. Spring Boot微服务电商项目开发实战 --- 基础配置及搭建

    根据SpringBoot实现分布式微服务项目近两年的开发经验,今天决定开始做SpringBoot实现分布式微服务项目的系列文章,帮助其他正在使用或计划使用SringBoot开发的小伙伴们.本次系列文章 ...

  2. SpringBoot微服务电商项目开发实战 --- 模块版本号统一管理及Redis集成实现

    上一篇文章总结了基于SpringBoot实现分布式微服务下的统一配置.分环境部署配置.以及服务端模块的分离(每一个提供者就是一个独立的微服务).微服务落地.Dubbo整合及提供者.消费者的配置实现.本 ...

  3. SpringBoot微服务电商项目开发实战 --- api接口安全算法、AOP切面及防SQL注入实现

    上一篇主要讲了整个项目的子模块及第三方依赖的版本号统一管理维护,数据库对接及缓存(Redis)接入,今天我来说说过滤器配置及拦截设置.接口安全处理.AOP切面实现等.作为电商项目,不仅要求考虑高并发带 ...

  4. SpringBoot微服务电商项目开发实战 --- Redis缓存雪崩、缓存穿透、缓存击穿防范

    最近已经推出了好几篇SpringBoot+Dubbo+Redis+Kafka实现电商的文章,今天再次回到分布式微服务项目中来,在开始写今天的系列五文章之前,我先回顾下前面的内容. 系列(一):主要说了 ...

  5. Spring Boot微服务电商项目开发实战 --- 分布式开发要避的那些坑

    今天已经进入第七讲了,整个微服务架构的搭建工作也基本完成.那到目前为止究竟使用了那些技术及实现了什么功能呢?我们先回顾一下. 使用的技术:SpringBoot.Dubbo.Zookeeper.Redi ...

  6. SpringBoot微服务电商项目开发实战 --- 全局异常处理

    上一篇文章讲了Redis缓存的安全防范及Kafka的接入及消息实现,今天接着前面的内容基础说说项目的优化和基础配置,今天要讲的内容主要是Spring Boot项目中的全局异常处理.为什么要做这件事呢? ...

  7. SpringBoot微服务电商项目开发实战 --- Kafka集成接入

    kafka作为消息中间件的一款产品,她比较轻量级,在吞吐量方面很优秀,默认消息持久化到硬盘当中 168小时=7天,log.retention.hours=168,比较适合来做运营的统计.其他的不多讲, ...

  8. Spring Boot微服务电商项目开发实战 --- 多环境部署配置、端口号统一配置及Dubbo提供者消费者实现

    昨天已经搭建好了SpringBoot基于Maven的基础父子级项目,今天开始进入项目分模块及分布式实现.首先我们基于昨天的项目,在父级工程下建lyn-sys,lyn-customer,lyn-good ...

  9. SpringBoot微服务电商项目开发实战 --- 分布式文件系统实现

    SpringBoot分布式开发系列文章已经持续了一段时间了,每一篇都有核心内容讲给大家.比如:分环境部署配置及服务端口号统一配置,子模块版本号管理及第三方jar依赖管理,单点登录实现,接口安全(签名+ ...

随机推荐

  1. 手把手教你学Numpy,这些api不容错过

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Numpy专题的第5篇文章,我们来继续学习Numpy当中一些常用的数学和统计函数. 基本统计方法 在日常的工作当中,我们经常需要通过一 ...

  2. C++中为什么按两次ctrl+D才能结束标准I/O

    参考资料: https://www.douban.com/group/topic/127062773/ 今天学习了C++语言的标准I/O,也就是std::cin和std::cout,但是我发现当系统在 ...

  3. Dubbo——SPI及自适应扩展原理

    文章目录 引言 正文 一.什么是SPI? 1. Java SPI的实现 2. Dubbo SPI实现原理 由配置文件得到的猜想 SPI源码 二.自适应扩展机制 三.Dubbo IOC 总结 引言 Du ...

  4. vue+ajax的实现

    html <tr> <td>用户名</td> <td id="t01"><input type="text" ...

  5. VB.NET在基类中定义共享事件(类似于C#中的静态事件)

    基类: Public Class userFun Private Shared _PnlStatus As String ‘必须设为共享字段,如果不设为Shared,将不能传递字符串内容 Public ...

  6. Java并发编程-深入Java同步器AQS原理与应用-线程锁必备知识点

    并发编程中我们常会看到AQS这个词,很多朋友都不知道是什么东东,博主经过翻阅一些资料终于了解了,直接进入主题. 简单介绍 AQS是AbstractQueuedSynchronizer类的缩写,这个不用 ...

  7. 并发编程之详解InheritableThreadLocal类原理

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 在Java并发编 ...

  8. IDEA SonarLint安装及使用

    SonarLint插件安装IDEA菜单栏选择File->Settings,左边栏选择Plugins 在线安装选择Browse repositories,搜索Sonar,选择SonarLint进行 ...

  9. java.math.BigDecimal cannot be cast to [Ljava.lang.Object;

    从数据库中使用sum函数取出统计值后,放进list中,遍历list的时候强转化成Object是报错. BigDecimal .Integer不是基本类型,是int的包装类,无法把包装当做基本类型来用. ...

  10. 搭建nginx服务器nginx-1.6.2.tar.gz

    2016-06-17 09:06:52   一.实验环境 CentOS6.5 软件:nginx-1.6.2.tar.gz 二.实验步骤 1)安装nginx所依赖的软件 yum -y install p ...