Django项目搭建【学习笔记】
创建工程
pip install django==1.11.11 -i https://pypi.tuna.tsinghua.edu.cn/simple
方式一:命令创建django01项目
django-admin startproject djangoProject01
方式二: Pychram 直接创建djangoProject01项目(省略)
配置开发环境
1.准备配置文件目录
新建包,命名为settings, 作为配置文件目录
2.准备开发环境(dev.py)和生产环境配置文件(prod.py)
在配置包settings中,新建开发和生产环境配置文件
3.准备开发环境配置内容
将默默认的配置文件settings.py中内容拷贝至dev.py
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uAdBQ7el-1631957279162)(.\image-20210918163912956.png)]
配置完成后:运行程序,测试结果。
配置jinja2模板引擎
pip install Jinja2
TEMPLATES = [
{
'BACKEND': 'django.template.backends.jinja2.Jinja2', # jinja2模板引擎
'DIRS': [BASE_DIR.parent / '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',
],
# 补充jinja2模板引擎环境
'environment': 'djangoProject01.utils.jinja2_env.jinja2_environment',
},
},
{
'BACKEND': 'django.template.backends.django.DjangoTemplates', # django默认的模板
'DIRS': [BASE_DIR.parent / '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',
],
},
},
]
编写Jinja2模板引擎的配置代码
from jinja2 import Environment
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse
"""
确保可以使用模板引擎中的 {{url('')}} 和 {{static('')}} 语句
"""
def jinja2_environment(**options):
env = Environment(**options)
env.globals.update({
'static': staticfiles_storage.url,
'url': reverse,
})
return env
加载Jinja2模板引擎环境
配置完成后:运行程序,测试结果。
配置MySQL数据库
说明:这里我是用本机装的mysql数据库
新建MySQL数据库 django01
create database django01 charset=utf8;
新建MySQL用户 django01, 密码为 123456
create user django01 identified by '123456';
授权django01 用户 访问 数据库 django01
grant all on django01.* to 'django01'@'%';
刷新数据库权限
flush privileges;
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# }
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'HOST': 'localhost', # 数据库主机
'USER': 'django01', # 数据库用户
'PASSWORD': '123456', # 数据库密码
'PORT': '3306', # 端口
'NAME': 'django01', # 数据库名
}
}
pip install PyMySQL
工程同名子目录的__init__.py
文件中,添加如下代码:
import pymysql
pymysql.version_info = (1, 4, 10, 'final', 0)
pymysql.install_as_MySQLdb()
配置完成后:运行程序,测试结果。
配置Redis数据库
pip install django-redis
django-redis使用说明文档 https://django-redis-chs.readthedocs.io/zh_CN/latest/
CACHES = {
"default": { # 默认
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/0",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
"session": { # session
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1: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数据
。
配置完成后:运行程序,测试结果。
配置工程日志
# 配置日志工程
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',
# linux 环境下, 所有的路径信息都是用os.path模块生成的,windows下使用 / 拼接的
'filename': BASE_DIR.parent / 'logs/django01.log', # windows环境日志文件的位置
'maxBytes': 300 * 1024 * 1024,
'backupCount': 10,
'formatter': 'verbose',
},
},
'loggers': { # 日志器
'django01': { # 定义一个名为django01的日志器
'handlers': ['console'], # 同时向终端与文件输出日志
'propagate': True, # 是否继续传递日志信
'level': 'INFO', # 日志器接收的最低日志级别
}
},
}
import logging
# 创建日志记录器
logger = logging.getLogger('django01')
# 输出日志
logger.debug('测试logging模块debug')
logger.info('测试logging模块info')
logger.error('测试logging模块error')
配置前端静态文件
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR.parent / 'static'] # 配置静态文件加载路径
配置完成后:运行程序,测试结果,发现静态文件图片资源加载成功。