美多商城python项目准备流程-1
pycharm解释器截图,python3环境一定要准确
1.首先在git 或者gitlab 或者gitee 创建自己的仓库
2.在本地创建文件夹然后git clone 下载gitee仓库内容,然后用pycharm打开项目,并在终端创建项目名称,配置解释器添加
3.django-admin startproject meiduo_test_story 执行前提 你需要安装django 需要进入虚拟环境创建
4.然后配置开发环境,项目分为开发环境(代码调试),生产环境(线上部署)
注意:
1.新建python软件包为settings,作为配置文件目录. 注意:在pycharm打开项目后,需要第一时间修改忽略文件,在.gitignore中 空格添加 .idea 回车
2.准备开发文件和生产文件,开发文件为dev.py(把原有settings.py拷贝到这里),生产文件prod.py(把原有settings.py拷贝到这里)。并删除原有外围settings
3.修改项目文件manage.py 把开发环境变量替换成现有变量如下
原有变量没有dev,修改后增加dev,意思是增加开发环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'meiduo_test.settings')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'meiduo_test.settings.dev')
5.配置jinja2模板引擎
1.安装jinja2模板引擎,pycharm解释器中安装jinja2
2.配置jinja2模板如下 ,模板引擎需要在一个TEMPLATES中,注意:配置这个模板要在dev.py中配置,而且原有要放在jinja2模板后面,不能注释掉
TEMPLATES = [
{
'BACKEND': 'django.template.backends.jinja2.Jinja2', # jinja2模板引擎
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
3.补充jinja2模板引擎环境,需要在项目目录下创建utils软件包,并且新建jinja2_env.py,内容如下,
配置完如下内容后,在dev.py templates jinja2模板中添加如下内容
# 补充Jinja2模板引擎环境
'environment': 'meiduo_mall.utils.jinja2_env.jinja2_environment',
meiduo_mall 为变量需要根据项目名称具体修改
from jinja2 import Environment
from django.urls import reverse
from django.contrib.staticfiles.storage import staticfiles_storage
def jinja2_environment(**options):
"""jinja2环境"""
# 创建环境对象
env= Environment(**options)
# 自定义语法 {{static('静态文件相对路径')}} {{url('路由的命名空间')}}
env.globals.update({
'static':'staticfiles_storage.url', #获取静态文件前缀
'url':reverse, #反向解析
})
# 返回环境对象
return env
6.配置mysql数据库
1.新建并安装mysql数据(省略)
2.创建项目数据库,create database meiduo_test charset=utf8;
3.新建用户,目的是为了对应用户访问对应数据库。避免权限异常,crate user fjc identified by '123456';
4.用户授权,grant all on meiduo_test.* to 'fjc'@'%';
5.刷新,flush privileges;
6.配置数据,以下内容添加到dev.py中,原有databases删除或者注释掉
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'HOST': '127.0.0.1', # 数据库主机
'PORT': 3306, # 数据库端口
'USER': 'itheima', # 数据库用户名
'PASSWORD': '123456', # 数据库用户密码
'NAME': 'meiduo' # 数据库名字
},
}
可能出现的错误
Error loading MySQLdb module: No module named 'MySQLdb'.
安装pymysql,pycharm 安装pymysql
7.安装pymysql后,需要在项目名字的目录中__init__.py中添加如下代码,让mysql生效
from pymysql import install_as_MySQLdb
install_as_MySQLdb()
7.配置redis缓存数据库
1.需要再pycharm中安装django-redis
2.在dev.py mysql数据库配置下面 增加redis配置如下
#配置redis数据库,需要安装django-redis包
CACHES = {
"default": { #默认
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://192.168.1.92:6379/0",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
# session
"session": { #session
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://192.168.1.92:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "session"
default:
默认的Redis配置项,采用0号Redis库。
session:
状态保持的Redis配置项,采用1号Redis库。
SESSION_ENGINE
修改session存储机制
使用Redis保存。
SESSION_CACHE_ALIAS:
使用名为"session"的Redis配置项存储session数据
。
配置完成后:运行程序,测试结果。
8.配置工程日志
1.首先在第一级项目下创建log目录,然后创建文件.gitkeep,目的是保留logs文件夹,git提交时候忽略logs内的日志
2.添加配置文件到dev.py文件最后面,内容如下
# 配置工程的日志信息
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/meiduo.log'), # 日志文件的位置
'maxBytes': 300 * 1024 * 1024,
'backupCount': 10,
'formatter': 'verbose'
},
},
'loggers': { # 日志器
'django': { # 定义了一个名为django的日志器
'handlers': ['console', 'file'], # 可以同时向终端与文件中输出日志
'propagate': True, # 是否继续传递日志信息
'level': 'INFO', # 日志器接收的最低日志级别
},
}
}
9.配置静态文件
1.创建静态文件static目录,为什么是static目录,因为dev.py中已经写了叫static
2.导入已经准备好的静态文件资源进行测试
# 配置静态文件加载路径
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]