python框架Django实战商城项目之工程搭建过程图文详解


Posted in Python onMarch 09, 2020

项目说明

该电商项目类似于京东商城,主要模块有验证、用户、第三方登录、首页广告、商品、购物车、订单、支付以及后台管理系统。项目开发模式采用前后端不分离的模式,为了提高搜索引擎排名,页面整体刷新采用jinja2模板引擎实现,局部刷新采用vue.js实现。

项目运行机制如下:

python框架Django实战商城项目之工程搭建过程图文详解

项目搭建

工程创建

项目使用码云进行源代码版本控制,在码云创建好后直接克隆到本地即可,然后在项目根目录下执行virtualenv venv创建虚拟环境,source venv/bin/activat激活虚拟环境后,安装django后,执行 django-admin startproject immortal_mall创建django工程。

配置开发环境

商城项目有两个环境,分别为测试环境和开发环境,django项目在创建完成后只有一个settings配置文件,但是两个环境需要两个配置文件,这里需要修改django获取配置文件的方式。新建settings包,再新建dev和pro两个配置文件,将默认生成的settings文件里面的内容拷贝至dev和pro文件里,结果如下

python框架Django实战商城项目之工程搭建过程图文详解

再在mange.py文件里指定开发环境需要的配置文件,生成环境的后面再说

python框架Django实战商城项目之工程搭建过程图文详解

配置jiaja2模板引擎

安装jinja2扩展包pip install jinja2,然后在dev文件中配置一下

python框架Django实战商城项目之工程搭建过程图文详解

这里有个注意的点,如果在运行的时候报错了,提示

python框架Django实战商城项目之工程搭建过程图文详解

这时是因为注释掉了django默认的模板配置,需要去掉注释,只添加新的版本引起即可。

配置mysql数据库

新建数据库

新建数据库

create database meiduo charset=utf8;

新建mysql用户

create user mall identified by '123456';

授权用户只能访问immortal_mall数据库

grant all on immortal_mall.* to 'mall'@'%';

刷新授权

flush privileges;

配置数据库

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'immortal_mall',
 'HOST': '127.0.0.1',
 'USER': 'zhouyajun',
 'PASSWORD': '12345678',
 'PORT': '3306'
 }
}

django默认使用的是mysqlclient工具,需要单独安装,这里用pymysql代替,在工程同名子目录的__init__.py文件中,写入下面代码

import pymysql
pymysql.install_as_MySQLdb()

在启动项目对的时候可能会报错,提示mysql

File "/Users/lixiang/.env/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 36, in <module> raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__) django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

具体解决方式可以参考这里https://zhuanlan.zhihu.com/p/76920424

配置redis

商城采用redis作为缓存服务

pip install django-redis

这里是django-redis的使用文档https://django-redis-chs.readthedocs.io/zh_CN/latest/,在dev文件中配置redis

缓存配置

CACHES = {
 "default": {
 "BACKEND": "django_redis.cache.RedisCache",
 "LOCATION": "redis://127.0.0.1:6379/2",
 "OPTIONS": {
 "CLIENT_CLASS": "django_redis.client.DefaultClient",
 }
 },
 "session": {
 "BACKEND": "django_redis.cache.RedisCache",
 "LOCATION": "redis://127.0.0.1:6379/3",
 "OPTIONS": {
 "CLIENT_CLASS": "django_redis.client.DefaultClient",
 }
 }
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "session"

default是redis采用的默认配置,用的是2号数据库,session是redis保持保持状态的配置项,用的是3号数据库,

日志配置

# 日志配置
LOGGING = {
 'version': 1,
 'disable_existing_loggers': False, # 是否禁用已经存在的日志器
 'formatters': { # 日志信息显示的格式
 'verbose': {
 'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
 },
 'simple': {
 'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
 },
 },
 'filters': { # 对日志进行过滤
 'require_debug_true': { # django在debug模式下才输出日志
 '()': 'django.utils.log.RequireDebugTrue',
 },
 },
 'handlers': { # 日志处理方法
 'console': { # 向终端中输出日志
 'level': 'INFO',
 'filters': ['require_debug_true'],
 'class': 'logging.StreamHandler',
 'formatter': 'simple'
 },
 'file': { # 向文件中输出日志
 'level': 'INFO',
 'class': 'logging.handlers.RotatingFileHandler',
 'filename': os.path.join(os.path.dirname(BASE_DIR), 'logs/mall.log'), # 日志文件的位置
 'maxBytes': 300 * 1024 * 1024,
 'backupCount': 10,
 'formatter': 'verbose'
 },
 },
 'loggers': { # 日志器
 'django': { # 定义了一个名为django的日志器
 'handlers': ['console', 'file'], # 可以同时向终端与文件中输出日志
 'propagate': True, # 是否继续传递日志信息
 'level': 'INFO', # 日志器接收的最低日志级别
 },
 }
}

这里需要在项目的根目录下手动创建logs文件,写日志的时候呢,我们希望能够自动分日期去写,每天的日志写到不同的文件里,这里可以使用python模块自带的TimedRotatingFileHandler,也可以自定义一个handler类去实现。我这里呢自己实现了一个类叫做MallRotatingFileHandler 效果如下:

python框架Django实战商城项目之工程搭建过程图文详解

该类实现按月划分日志文件,自动按照当天日期命名日志文件,也可以定义文件容量。

配置前端静态文件准备静态文件夹static

python框架Django实战商城项目之工程搭建过程图文详解

指定静态文件加载路径

# 指定加载静态恩建路由前缀
STATIC_URL = '/static/'
# 配置静态文件加载路径
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

运行项目,请求获取一张图片http://127.0.0.1:8989/static/images/adv01.jpg,成功获取表示配置正确。

最终项目各个目录展示成果:

python框架Django实战商城项目之工程搭建过程图文详解

总结

到此这篇关于python框架Django实战商城项目之工程搭建过程的文章就介绍到这了,更多相关python框架Django工程搭建内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python根据文件大小打log日志
Oct 09 Python
解析Python中的生成器及其与迭代器的差异
Jun 20 Python
python实现监控某个服务 服务崩溃即发送邮件报告
Jun 21 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
详解安装mitmproxy以及遇到的坑和简单用法
Jan 21 Python
深入解析Python小白学习【操作列表】
Mar 23 Python
python验证身份证信息实例代码
May 06 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
Jun 28 Python
简单了解如何封装自己的Python包
Jul 08 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
Aug 24 Python
Python列表嵌套常见坑点及解决方案
Sep 30 Python
python os.listdir()乱码解决方案
Jan 31 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
Mar 08 #Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
Mar 08 #Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
Mar 08 #Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
Mar 08 #Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
Mar 08 #Python
python输出第n个默尼森数的实现示例
Mar 08 #Python
Tensorflow之梯度裁剪的实现示例
Mar 08 #Python
You might like
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
深入PHP与浏览器缓存的分析
2013/06/03 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
微信小程序发送订阅消息的方法(php 为例)
2019/10/30 PHP
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
解决pycharm双击但是无法打开的情况
2020/10/31 Javascript
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
python实现的各种排序算法代码
2013/03/04 Python
python中mechanize库的简单使用示例
2014/01/10 Python
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
2020/11/19 Python
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
2013年军训通讯稿
2014/02/05 职场文书
2014年教研活动总结范文
2014/04/26 职场文书
公司担保书范文
2014/05/21 职场文书
倡导文明标语
2014/06/16 职场文书
2014年班干部工作总结
2014/11/25 职场文书
先进教师个人总结
2015/02/11 职场文书
钢铁是怎样炼成的读书笔记
2015/06/29 职场文书
庆元旦主持词
2015/07/06 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技
Windows11 Insider Preview Build 25206今日发布 更新内容汇总
2022/09/23 数码科技