项目配置设置二 (芒果头条项目进度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')
]
相关推荐
zm8 分钟前
极限复习c++
开发语言·c++
硅基茶水间12 分钟前
「轻量级AI编程桌面软件」代码上下文一键搞定|已开源
python
追风赶月、20 分钟前
【QT】认识QT
开发语言·qt
Hockor41 分钟前
写给前端的 Python 教程三(字符串驻留和小整数池)
前端·后端·python
网安小张44 分钟前
解锁FastAPI与MongoDB聚合管道的性能奥秘
数据库·python·django
GeekAGI44 分钟前
Python 定时器框架
python
秋田君1 小时前
深入理解JavaScript设计模式之闭包与高阶函数
开发语言·javascript·设计模式
KENYCHEN奉孝1 小时前
Pandas和Django的示例Demo
python·django·pandas
拾零吖1 小时前
《Pytorch深度学习实践》ch8-多分类
人工智能·pytorch·python
亿牛云爬虫专家1 小时前
NLP驱动网页数据分类与抽取实战
python·分类·爬虫代理·电商·代理ip·网页数据·www.goofish.com