您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页Python项目实战 1.3:项目准备.工程创建和配置

Python项目实战 1.3:项目准备.工程创建和配置

来源:宝玛科技网


一、创建工程

1. 准备项目代码仓库

1.1 源码托管网站

  • 码云(

1.2 创建源码远程仓库:wangye_project

1.3 克隆项目代码仓库

git clone https://gitee.com/mengnf/wangye_mall.git

1.4 创建虚拟环境,安装Django框架

1.5 创建商城Django工程 

django-admin startproject wangye_mall

2. Pycharm打开项目

可查看Git信息 

二、配置开发环境 

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

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

1. 新建配置文件

1.2 准备开发和生产环境配置文件

在配置包settings中,新建开发dev.py和生产环境prod.py配置文件

1.3 准备开发环境配置内容

将默认的配置文件settings.py中内容拷贝至dev.py

1.4 删除原来的settings.py文件

2. 修改manage.py指定开发环境配置文件

3. 配置Jinja2模板引擎

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

安装Jinja2扩展包

pip install Jinja2

配置Jinja2模板引擎

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',
            ],
        },
    },
]

3. 补充Jinja2模板引擎环境

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

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

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


def jinja2_environment(**options):
    """jinja2环境"""

    # 创建环境对象
    env = Environment(**options)

    # 自定义语法:{{ static('静态文件相对路径') }} {{ url('路由的命名空间') }}
    env.globals.update({
        'static': staticfiles_storage.url,  # 获取静态文件的前缀
        'url': reverse,  # 反向解析
    })
    return env


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

三、配置MySQL数据库

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

3.1 新建MySQL数据库

1.新建MySQL数据库:wangye_mall

create database wangye_mall charset=utf8;

2.新建MySQL用户

create user wangyedev identified by '123456';

3.授权wangyedev用户访问wangye_mall数据库 

grant all on wangye_mall.* to 'wangyedev'@'%';

4.授权结束后刷新

flush privileges;

关于mysql: 

3.2 配置MySQL数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 数据库引擎
        'HOST': '192.168.2.111',  # 数据库主机
        'PORT': 3306,  # 数据库端口
        'USER': 'wangyedev',  # 数据库用户名
        'PASSWORD': '123456',  # 数据库用户密码
        'NAME': 'wangye_mall'  # 数据库名字
    }
}

可能出现的错误:

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

出现错误的原因:

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

解决办法:

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

3.3 安装PyMySQL扩展包

1.安装驱动程序

pip install pymysql
from pymysql import install_as_MySQLdb


install_as_MySQLdb()

四、配置Redis数据库

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

4.1 安装django-redis扩展包

pip install django-redis

django-redis文档:

4.2 配置Redis数据库

dev.py中添加:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://:123456@192.168.2.105:6379/0",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    # session
    "session": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://:123456@192.168.2.105: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数据。 

五、配置工程日志

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

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

5.3 日志记录器的使用

import logging

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

5.4 Git管理工程日志

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

问题:

解决:

提示2:关于提交git忽略文件配置: 

5.5 知识要点

六、配置前端静态文件

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

6.1 准备静态文件

6.2 dev.py中指定静态文件加载路径

STATIC_URL = '/static/'

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

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

示例文件传送门: 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务