ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

美多商城之项目准备-工程创建和配置

2021-06-27 16:31:37  阅读:248  来源: 互联网

标签:meiduo 创建 数据库 配置 django 模板 日志 商城


一、创建工程

美多商城项目源代码采用远程仓库托管

1. 准备项目代码仓库

1.源码托管网站

2.创建源码远程仓库:meiduo_project

【在忽略文件.gitignore中添加 .idea】

2. 克隆项目代码仓库

1.进入本地项目目录

$ mkdir ~/projects     # 若在windows中,直接新建就好了
$ cd projects/

2.克隆仓库

$ git clone https://gitee.com/xxxxxx/meiduo_project.git

3. 创建美多商城工程

1.进入本地项目仓库

$ cd ~/projects/meiduo_project/

2.创建美多商城虚拟环境,安装Django框架    【可以直接在anaconda中创建一个项目环境】

$ mkvirtualenv -p python3 meiduo_mall
$ pip install django==1.11.11

3.创建美多商城Django工程

$ django-admin startproject meiduo_mall

创建工程完成后:运行程序,测试结果。

【在pycharm中快速启动程序(而不再使用命令),则在 run/Debug Configurations(右上角启动有)中的Script parameters中添加 runserver 8000】

二、配置开发环境

美多商城项目的环境分为开发环境生产环境

  • 开发环境:用于编写和调试项目代码。
  • 生产环境:用于项目线上部署运行。

1. 新建配置文件

  1. 准备配置文件目录
    • 新建包,命名为settings,作为配置文件目录
  2. 准备开发和生产环境配置文件
    • 在配置包settings中,新建开发和生产环境配置文件
  3. 准备开发环境配置内容
    • 将默认的配置文件settings.py中内容拷贝至dev.py

【在wsgi.py中需要修改地址,其实在下面manage.py中修改后不改这个也行】

2. 指定开发环境配置文件

配置完成后:运行程序,测试结果。

3.配置Jinja2模板引擎

美多商城的模板采用Jinja2模板引擎

1. 安装Jinja2扩展包

$ pip install Jinja2

2. 配置Jinja2模板引擎

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',  # jinja2模板引擎
        'DIRS': [os.path.join(BASE_DIR, 'templates')],  # 配置模板文件加载路径, 这儿同时要新建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',
            ],
        },
    },
]

3. 补充Jinja2模板引擎环境

1.创建Jinja2模板引擎环境配置文件

2.编写Jinja2模板引擎环境配置代码

from jinja2 import Environment
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse


def jinja2_environment(**options):  # **options拆包
    env = Environment(**options)  # 创建环境对象
    #  全局更新
    env.globals.update({
        'static': staticfiles_storage.url,  # 获取静态文件的前缀
        'url': reverse,  # 反向解析
    })
    return env


"""
确保可以使用模板引擎中的{{ url('') }} {{ static('') }}这类语句 
{{ url('') }}:路由的命名空间
{{ static('') }}:静态文件相对路径
"""

3.加载Jinja2模板引擎环境

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',  # jinja2模板引擎
        'DIRS': [os.path.join(BASE_DIR, 'templates')],  # 配置模板文件加载路径, 这儿同时要新建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': 'meiduo_mall.utils.jinja2_env.jinja2_environment',
        },
    },
]

配置完成后:运行程序,测试结果。

4.配置MySQL数据库

美多商城数据存储服务采用MySQL数据库

1. 新建MySQL数据库

1.新建MySQL数据库:meiduo_mall

$ create database meiduo charset=utf8;

2.新建MySQL用户

$ create user itheima identified by '123456';

3.授权itcast用户访问meiduo_mall数据库

$ grant all on meiduo.* to 'itheima'@'%';

4.授权结束后刷新特权

$ flush privileges;

2. 配置MySQL数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 数据库引擎
        'HOST': '127.0.0.1',  # 数据库主机, 此处写本地的IP地址就行,防止IP地址变化
        'PORT': 3306,  # 数据库端口
        'USER': 'itmeima',  # 数据库用户名
        'PASSWORD': '123456',  # 数据库用户密码
        'NAME': 'meiduo'  # 数据库名字
    }
}

可能出现的错误

  • Error loading MySQLdb module: No module named 'MySQLdb'.

出现错误的原因:

  • Django中操作MySQL数据库需要驱动程序MySQLdb
  • 目前项目虚拟环境中没有驱动程序MySQLdb

解决办法:

  • 安装PyMySQL扩展包
  • 因为MySQLdb只适用于Python2.x的版本,Python3.x的版本中使用PyMySQL替代MySQLdb

3. 安装PyMySQL扩展包

1.安装驱动程序

$ pip install PyMySQL

2.在工程同名子目录的__init__.py文件中,添加如下代码:

from pymysql import install_as_MySQLdb

install_as_MySQLdb()

配置完成后:运行程序,测试结果。

5.配置Redis数据库

美多商城数据缓存服务采用Redis数据库

1. 安装django-redis扩展包

1.安装django-redis扩展包

$ pip install django-redis

2.django-redis使用说明文档

点击进入文档https://django-redis-chs.readthedocs.io/zh_CN/latest/

2. 配置Redis数据库

#  配置redis数据库
CACHES = {
    'default': {  # 默认
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redid://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数据

配置完成后:运行程序,测试结果。

项目启动过程中可能遇到这个问题:

解决办法:

这是因为版本不兼容问题导致的。

运行结果:

6.配置工程日志

美多商城的日志记录采用logging模块

1. 配置工程日志

#  配置工程日志
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/meiduo.log'),  # 日志文件的位置
            'maxBytes': 300 * 1024 * 1024,  # 300M
            'backupCount': 10,  # 日志文件个数
            'formatter': 'verbose'
        },
    },
    'loggers': {  # 日志器
        'django': {  # 定义了一个名为django的日志器
            'handlers': ['console', 'file'],  # 可以同时向终端与文件中输出日志
            'propagate': True,  # 是否继续传递日志信息
            'level': 'INFO',  # 日志器接收的最低日志级别
        },
    }
}

2. 准备日志文件目录

3. 日志记录器的使用

import logging

# 创建日志记录器
logger = logging.getLogger('django')
# 输出日志
logger.debug('测试logging模块debug')
logger.info('测试logging模块info')
logger.error('测试logging模块error')

4. Git管理工程日志

提示1:

  • 开发过程中,产生的日志信息不需要代码仓库进行管理和记录。

提示2:

  • 建立代码仓库时,生成的忽略文件中已经默认忽略掉了 *.log 。

问题:

  • logs文件目录需求被Git仓库记录和管理。
  • 当把 *.log 都忽略掉后,logs文件目录为空。
  • 但是,Git是不允许提交一个空的目录到版本库上的。

解决:

  • 在空文件目录中建立一个 .gitkeep 文件,然后即可提交。

配置完成后:运行程序,测试结果。

5. 知识要点

  1. 本项目最低日志等级设置为:INFO
  2. 创建日志记录器的方式:
    logger = logging.getLogger('django')
    
  3. 日志记录器的使用:
    logger.info('测试logging模块info')
    
  4. 在日志loggers选项中可以指定多个日志记录器

7.配置前端静态文件

美多商城项目中需要使用静态文件,比如 css、images、js 等等。

1. 准备静态文件

​​​​​​​

2. 指定静态文件加载路径

#  指定加载静态文件的路由前缀
STATIC_URL = '/static/'

#  配置静态文件加载路径
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

配置完成后:运行程序,测试结果。

测试路径:http://127.0.0.1:8000/static/images/logo.jpg

​​​​​​​

标签:meiduo,创建,数据库,配置,django,模板,日志,商城
来源: https://blog.csdn.net/weixin_44799217/article/details/115422678

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有