项目配置设置二 (芒果头条项目进度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')
]
相关推荐
阿珊和她的猫26 分钟前
v-scale-scree: 根据屏幕尺寸缩放内容
开发语言·前端·javascript
fouryears_234173 小时前
Flutter InheritedWidget 详解:从生命周期到数据流动的完整解析
开发语言·flutter·客户端·dart
我好喜欢你~3 小时前
C#---StopWatch类
开发语言·c#
lifallen5 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研5 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
wyiyiyi5 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
mit6.8245 小时前
[1Prompt1Story] 滑动窗口机制 | 图像生成管线 | VAE变分自编码器 | UNet去噪神经网络
人工智能·python
没有bug.的程序员6 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋6 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
cui__OaO6 小时前
Linux软件编程--线程
linux·开发语言·线程·互斥锁·死锁·信号量·嵌入式学习