项目配置设置二 (芒果头条项目进度3)

1 配置Jinja2模板引擎

1.1 安装Jinja2扩展包

 pip install Jinja2

1.2 创建Jinja2模板引擎环境

在项⽬包⽬录-->utils⽬录中创建jinja2_env.py⽂件

python 复制代码
# newsdemo/utils/jinja2_env.py
from jinja2 import Environment
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse

"""
确保可以使⽤模板引擎中的{{ url('') }} {{ static('') }}这类语句
"""


def environment(**options):
    env = Environment(**options)
    env.globals.update({
        'static': staticfiles_storage.url,
        'url': reverse,
    })
    return env

1.3 配置Jinja2模板引擎

注意 Django2.2中配置模板引擎,⾃带的Django模板引擎配置不能删除

python 复制代码
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不能直接使⽤context_processor
            ],
            # 补充Jinja2模板引擎环境
            'environment': 'mangguo_pro.utils.jinja2_env.environment',
        },
    }, {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        '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',
            ],
        },
    },
]

验证下是否配置是否正常

python 复制代码
python .\manage.py runserver

2 配置MySQL数据库

2.1 新建MySQL数据库

python 复制代码
# 1.新建mgdb数据库
create database mgdb default charset=utf8;

# 2.新建MySQL⽤户
$ create user 'mashibing'@'%' identified by '123456';

# 3.授权mashibing⽤户访问mgdb数据库
$ grant all on mgdb.* to 'mashibing'@'%';

# 4.刷新权限
$ flush privileges;

2.2 项⽬中配置MySQL数据库

python 复制代码
DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'mgdb',
 'USER': 'mashibing',
 'PASSWORD': '123456',
 'HOST': '192.168.1.4',
 'PORT': '3306',
 }
}

2.3 安装模块

python 复制代码
pip install mysqlclient

3 配置redis数据库

3.1 安装django-redis扩展包

python 复制代码
$ pip install django-redis

使用参考文档:

django-redis 中文文档 --- Django-Redis 4.7.0 文档 (django-redis-chs.readthedocs.io)

3.2 配置Redis数据库

python 复制代码
# 配置Redis数据库
CACHES = {
    "default": {  # 默认
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://192.168.1.4:6379/0",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    "session": {  # session
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://192.168.1.4:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    "verify_code": {  # 验证码
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://192.168.1.4:6379/2",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "session"

windows 参考安装:

Windows 安装Redis(图文详解)_windows安装redis-CSDN博客

四 配置项目日志.

4.1 配置项⽬⽇志

python 复制代码
# 配置项⽬⽇志
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,  # 是否禁⽤已经存在的⽇志器
    'formatters': {  # ⽇志信息显示的格式
        'verbose': {
            'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
            # 'format': '%(levelname)s %(asctime)s %(module)s % (lineno)d %(message)s'
        },
        'simple': {
            'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
            # '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(BASE_DIR, 'logs/mangguo.log'),  # ⽇志⽂件的位置
            'maxBytes': 300 * 1024 * 1024,
            'backupCount': 10,
            'formatter': 'verbose'
        },
    },
    'loggers': {  # ⽇志器
        'django': {  # 定义了⼀个名为django的⽇志器
            'handlers': ['console', 'file'],  # 可以同时向终端与⽂件中输出⽇志
            'propagate': True,  # 是否继续传递⽇志信息
            'level': 'INFO',  # ⽇志器接收的最低⽇志级别
        },
    }
}

4.2 创建⽇志⽂件⽬录

4.3 ⽇志记录器的使⽤

python 复制代码
import logging
# 创建⽇志记录器
logger = logging.getLogger('django')
# 输出⽇志
logger.debug('测试logging模块debug')
logger.info('测试logging模块info')
logger.error('测试logging模块error')

4.4 Git管理⼯程⽇志

问题:

  • 项⽬中⽣成的⽇志⽂件,我们在进⾏版本控制时,不想将⽇志⽂件上传到远程 库。 我们可以忽略*.log的⽂件。

解决⽅法:

  • 在.gitignore⽂件中添加*.log

问题: 在⽇志⽬录中忽略⽇志⽂件,上传到远程库的话会导致⽇志⽬录是空⽂件 夹,git不允许上传空⽬录。 怎么办?

  • 解决⽅法: 在⽇志⽬录中新建.gitkeep的空⽂件即可。

4.5. ⽇志级别

  • DEBUG : 打印全部的⽇志,详细的信息,通常只出现在诊断问题上
  • INFO : 打印info,warning,error,critical级别的⽇志,确认⼀切按预期运⾏
  • WARNING : 打印warning,error,critical级别的⽇志,⼀个迹象表明,⼀些意想不到的事 情发⽣了,或表明⼀些问题在不久的将来(例如。磁盘空间低"),这个软件还能按预期 ⼯作
  • ERROR : 打印error,critical级别的⽇志,更严重的问题,软件没能执⾏⼀些功能
  • CRITICAL : 打印critical级别,⼀个严重的错误,这表明程序本身可能⽆法继续运⾏

级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG

低于当前设置⽇志级别就不出⽇志。 例如下⾯设置django⽇志记录器级别为INFO。 低于它的DEBUG级别⽇志就不输出。

五 配置前端静态文件

5.1 将静态⽂件存放⾄项⽬根⽬录下的static⽂件夹中

5.2 指定静态⽂件加载路径

python 复制代码
STATIC_URL = '/static/'
# 指定静态⽂件存储⽬录
STATICFILES_DIRS = [
 os.path.join(os.path.dirname(BASE_DIR), 'static')
]
相关推荐
早上好啊! 树哥1 小时前
JavaScript Math(算数) 对象的用法详解
开发语言·javascript·ecmascript
Tomorrow'sThinker1 小时前
25年1月更新。Windows 上搭建 Python 开发环境:PyCharm 安装全攻略(文中有安装包不用官网下载)
ide·python·pycharm
noravinsc1 小时前
requests请求带cookie
开发语言·python·pycharm
风_流沙3 小时前
python pandas 对mysql 一些常见操作
python·mysql·pandas
程序猿(雷霆之王)4 小时前
C++——继承
开发语言·c++
自律小仔4 小时前
桌面开发 的变量声明(Variable Declaration)核心知识
开发语言·后端·golang
qq_273900234 小时前
pytorch torch.scatter_reduce函数介绍
人工智能·pytorch·python
ouyang_ouba4 小时前
pygame飞机大战
开发语言·python·pygame
浮生如梦_4 小时前
C#Halcon跨窗口颜色识别
开发语言·图像处理·计算机视觉·c#·视觉检测
叫我阿呆就好了4 小时前
C 实现植物大战僵尸(三)
c语言·开发语言