内容简介:当进入虚拟环境,通过在项目文件Jinja2模板渲染速度比django默认模板渲染速度要快很多。
1.配置开发环境
当进入虚拟环境,通过 django_admin
创建一个项目后,会在项目同名目录生成一个 setting.py
文件。而实际项目过程中会有不同的环境,如开发环境、生产环境;所有不同的环境各自使用不同的配置显得很重要。
-
开发环境:用于编写和调试项目代码。
-
生产环境:用于项目线上部署运行。
1.1 新建配置文件
-
准备配置文件目录
-
在 项目同名目录里名新建包 ,命名为settings,作为配置文件目录
-
-
准备开发和生产环境配置文件
-
在配置包settings中,新建开发环境配置文件
-
-
准备开发环境配置内容
-
将默认的配置文件settings.py中内容拷贝至setting包中,并命名为dev.py
-
1.2 指定开发环境配置文件
在项目文件 manage.py
中做如下修改:
# os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meiduo_mall.settings") #默认找setting.py,此处注释掉 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meiduo_mall.settings.dev")复制代码
2.配置Jinja2模板引擎
2.1 安装Jinja2扩展包
pip install Jinja2复制代码
Jinja2模板渲染速度比django默认模板渲染速度要快很多。
2.2 配置Jinja2模板引擎
在前面配置好的开发环境 dev.py
中加入如下代码,后续配置不说明也默认指在该文件中做修改。
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', ], # Jinja2模板引擎环境 'environment': '项目名.utils.jinja2_env.jinja2_environment', # 项目名修改为你项目的名字 }, }, ]复制代码
2.1 编写Jinja2模板引擎环境配置代码
在项目同名应用中新建一个 utils
包,在包里新建一个 jinja2_environment.py
文件,文件里内容如下:
from jinja2 import Environment from django.contrib.staticfiles.storage import staticfiles_storage from django.urls import reverse def jinja2_environment(**options): env = Environment(**options) env.globals.update({ 'static': staticfiles_storage.url, # 确保模板引擎中可以使用{{ url('') }} {{ static('') }}这类语句 'url': reverse, }) return env复制代码
此时你会发现 django
中的默认站点 admin
已经不能访问了,我们要继续使用django强大的后台站点功能做如下修改:
TEMPLATES = [ { # django 默认 template 模板配置 'BACKEND': 'django.template.backends.django.DjangoTemplates', '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', ], }, }, { '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', ], # Jinja2模板引擎环境 'environment': '项目名.utils.jinja2_env.jinja2_environment', }, }, ]复制代码
3 配置 MySQL 数据库
3.1 本地MySQL配置
先确保你本地MySQL有所需要的数据库名,然后进行连接,下面语句进入MySQL客户端后可新建一个数据库。
create database 数据库名 charset=utf8;复制代码
默认连接MySQL都是root用户权限级别太高,拥有操作所有数据库的权限,下面介绍MySQL新建用户并赋予操作单独一个数据库的权限。
create user tom identified by '123456'; --新建tom用户,密码123456 grant all on mall.* to 'tom'@'%'; --授权tom用户操作mall数据库使用权限 flush privileges; --刷新权限复制代码
3.2 配置MySQL数据库
django
默认使用 sqlite3
数据库,这是一个轻量级关系型数据库,我们下面替换掉它,在 dev.py
中做如下配置:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'HOST': '127.0.0.1', # 数据库主机,填项目中数据库真实ip 'PORT': 3306, # 数据库端口 'USER': 'tom', # 数据库用户名 'PASSWORD': '123456', # 数据库用户密码 'NAME': 'mall' # 数据库名字 }, }复制代码
3.3 安装PyMySQL扩展包
pip install pymysql复制代码
在工程同名子目录的 __init__.py
文件中,添加如下代码:
from pymysql import install_as_MySQL dbinstall_as_MySQLdb()复制代码
配置完成后:运行程序,测试结果。
4.配置redis
首先确保安装了 redis
数据库,然后在虚拟环境中安装 redis
,同样是通过pip安装。安装完以后还有安装 redis 的 django
扩展包 django-redis
。
pip install redis pip install django-redis复制代码
在 dev.py
中配置 redis
,此处用它来做session缓存。
CACHES = { "default": { # 默认 "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/0", # redis的ip,及使用它的0号数据库 "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } }, "session": { # session "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", # 此处使用1号数据库,在客户端查看记得select 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数据
。
配置完成后:运行程序,测试结果。
关于对 session缓存 策略的说明:
本地缓存
存储在本机内存中,如果丢失则不能找回,比数据库的方式读写更快。
SESSION_ENGINE='django.contrib.sessions.backends.cache'复制代码
混合存储
优先从本机内存中存取,如果没有则从数据库中存取。
SESSION_ENGINE='django.contrib.sessions.backends.cached_db'复制代码
默认存储
存储在数据库中,如下设置可以写,也可以不写。
SESSION_ENGINE='django.contrib.sessions.backends.db'复制代码
5.配置项目日志
下面介绍使用 logging
记录项目的日志。在 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/mall.log'), # 日志文件的位置 'maxBytes': 300 * 1024 * 1024, 'backupCount': 10, 'formatter': 'verbose' }, }, 'loggers': { # 日志器 'django': { # 定义了一个名为django的日志器 'handlers': ['console', 'file'], # 可以同时向终端与文件中输出日志 'propagate': True, # 是否继续传递日志信息 'level': 'INFO', # 日志器接收的最低日志级别 }, } }复制代码
然后在 项目目录
中建立一个 logs
的目录,然后在目录中建立一个mall.log文件。名字可以任意起,记得很上面file中filename对应起来即可。
当然实际开发中大都是使用 git
来管理项目的,每个人调试产出的log不太一样,开发中可以先将其加入忽略文件中。在项目文件 .gitignioe
中新增如下信息:
*.log复制代码
然后在 logs
目录中建立一个 .gitkeep
文件,保证 logs
目录能被 git
管理。
6.配置前端静态文件
前面提了一下项目中的html模板文件是配置在templates中,需要在项目同名子应用中建立一个templates目录,项目中需要使用静态文件,比如 css、images、js 等等,需要专门使用配置一个目录。在里面建立不同的目录来存放不同的文件。
STATIC_URL = '/static/' # 静态文件的路由# 配置静态文件加载路径 STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] # 在项目同名子引用中建立一个static目录复制代码
STATICFILES_DIRS是一个列表,这样我们就可以配置多个目录来存放静态文件。如:
# 配置静态文件加载路径 STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),os.path.join(BASE_DIR, 'static2')] 复制代码
7.应用注册
在项目同名目录中,也就是setting包同级目录中新建一个 apps
的包,然后进入到apps的目录中,在终端执行如下命令,创建一个users应用。
python ../../manage.py startapp users复制代码
然后在 dev.py
中注册应用:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 注册 'users.apps.UsersConfig', # 用户模块应用 ]复制代码
下面介绍一下 python 中 sys
模块,在 dev.py
的 BASE_DIR
下新增:
import sys # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, os.path.join(BASE_DIR, 'apps')) # 追加项目路径复制代码
这样注册应用就能简化成如下方式了:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 注册 # 'users.apps.UsersConfig', # 用户模块应用 'users', # 用户模块应用 ]复制代码
以上所述就是小编给大家介绍的《django中的配置文件》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Cypherpunks
Julian Assange、Jacob Appelbaum、Andy Müller-Maguhn、Jérémie Zimmermann / OR Books / 2012-11 / GBP 8.99
Cypherpunks are activists who advocate the widespread use of strong cryptography (writing in code) as a route to progressive change. Julian Assange, the editor-in-chief of and visionary behind WikiLea......一起来看看 《Cypherpunks》 这本书的介绍吧!