Django项目配置_美多商城

Django项目_美多商城

这是20年9月20,0基础开始学习了两个月,完成的第一个项目.
在这里写作,敲出每一行代码,是对自己的学习做个记录.
系统基于Winds 里安装的虚拟机----Ubuntu

项目准备

Git

git中的三个区域: 工作区(.git所在的文件夹即是工作区)  
			                暂存区(临时存储数据的区域)
			   				本地仓库区(暂存内容会存储在本地仓库)
			   
git的主要三步操作:git add .   上传到暂存区
							  git commit  -m  描述信息     上传到本地仓库
							  git push origin  分支名      推送到远端仓库
				
git status   								查看文件状态,红色代表在工作区;绿色代表在暂存区
git clone 远端仓库地址       		从远端克隆到本地
git checkout -b 分支名     
git push origin 分支名      
git branch  								查看当前分支     

Redis

redis 是个高性能的,基于内存的亦可持久化的日志型,key -value 数据库,读取速度可以达到 10万以上每秒
特点:  1. 支持数据持久化    2.不仅支持key-value类型  还支持:string  list set zeset hash
	   3.支持数据的备份
	   
redis默认的数据库为16个, 0-15    默认端口为:6379

Django

python 中的三大框架:flask tornado Django
Django的特点: 重量级框架  内部使用MVT设计模式
设计模式的核心思想: 分工   解耦

项目工程搭建

  1. 准备代码仓库

    进入桌面: cd Desktop
    准备仓库: git clone 远端仓库地址
    创建自己的分支: git checkout -b 分支名
    将分支推送到远端:git push origin 分支名

  2. 创建美多商城

    创建虚拟环境: makvirtualenv 环境名 -p python3
    (-p : 指定创建的虚拟环境中使用的 python 解释器版本)
    在虚拟环境中安装Django: pip install django==2.2.5
    利用Django创建工程: Django-admin startproject 项目名
    pycharm打开项目

  3. 配置开发环境(必要的)

    准备配置文件: 在内层meiduo_mall下,新建个settings包,作为配置文件目录
    准备配置内容: 在settings下创建两个文件:dev.py 和 prod.py(开发调试和上线用的)
    其次将项目中自带的sttings.py内容拷贝到dev.py中,删除settings.py

    修改原本的配置文件路径: 在manage.py中第六行左右修改为:os.envir…(项目名.settings.dev)
    注: (新建的settings目录下的dev.py文件)
    运行空项目: 右上方manage选框editx选项,添加runserver后运行项目

  4. 配置模板文件夹

    添加templates(模板)文件夹: 这里老师用front_end-pc里的模板(工作中新建templates)
    注:(将业务逻辑的Python代码和页面设计的HTML代码分离)

    在dev.py(即原来的settings)中修改路径:找到TEMPLATES,
    ‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)],

5.配置Mysql数据库

1.进入数据库

2.新建数据库: create database (meiduo_mall)库名  charset=utf8
新建用户,授权(可省略): create user itcast(用户名) identified by '123456'(密码);
			 grant all on meiduo_mall.* to 'itcast'@'%';
			 注:(本项目中已经操作了一次.其次是公司给你用户名,密码)
			 
3.配置数据库: 在dev.py中找到DATABASES复制内容以下内容
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # 数据库引擎
        'HOST': '127.0.0.1', # 数据库主机
        'PORT': 3306, # 数据库端口
        'USER': 'itcast', # 数据库用户名
        'PASSWORD': '123456', # 数据库用户密码
        'NAME': 'meiduo_mall' # 数据库名字
    },
}
**运行项目出现错误的原因:**
Django 中操作 MySQL 数据库需要驱动程序 MySQLdb
目前项目虚拟环境中没有驱动程序 MySQLdb
解决方法(即为什么安装PyMySQL扩展包):
Python3.x 的版本中使用 PyMySQL 替代 MySQLdb

4.安装驱动程序: pip install PyMySQL

在内层meiduomall的__init__.py文件中,添加如下代码:
# 导入函数: 
from pymysql import install_as_MySQLdb
# 调用该函数: 
install_as_MySQLdb()

报错可能:错误一 query = query.decode  改为  encode 再运行
		错误二 if version<(1,3,13)
			  	raise Improerly....把这两行注释掉,再运行
  1. 配置Redis数据库(安装redis客户端)

    安装django-redis扩展包: pip install django-redis
    配置redis数据库: 在dev.py中复制添加以下内容:
    CACHES = {
    “default”: { # 默认存储信息: 存到 0 号库
    “BACKEND”: “django_redis.cache.RedisCache”,
    “LOCATION”: “redis://127.0.0.1:6379/0”,
    “OPTIONS”: {
    “CLIENT_CLASS”: “django_redis.client.DefaultClient”,
    }
    },
    “session”: { # session 信息: 存到 1 号库
    “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”

    配置完成后运行程序,测试.
    我们之前讲过: redis 和 mysql 很像. 都有两个端: 客户端 & 服务端.
    我们想要把数据保存起来,必须走如下的流程:
    data ===> 利用客户端 ===> 保存服务端

  2. 配置日志

    在dev.py中添加以下代码:
    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(BASE_DIR, ‘logs/meiduo.log’), # 日志文件的位置
    ‘maxBytes’: 300 * 1024 * 1024,
    ‘backupCount’: 10,
    ‘formatter’: ‘verbose’
    },
    },
    ‘loggers’: { # 日志器
    ‘django’: { # 定义了一个名为django的日志器
    ‘handlers’: [‘console’, ‘file’], # 可以同时向终端与文件中输出日志
    ‘propagate’: True, # 是否继续传递日志信息
    ‘level’: ‘INFO’, # 日志器接收的最低日志级别
    },
    }
    }
    准备日志文件目录:在内层 meiduo_mall中创建logs文件夹,在该文件夹中添加 meiduo.log 文件. 作为日志的输出文件.

    日志有什么用?
    日志可以帮助我们快速定位错误, 快速拿取想要的信息: 例如前端发送了 GET 请求, 请求的地址是 /users/info/ 如果我们配置了日志信息, 则该请求过来以后, pycharm的控制台就会把这些信息打印出来, 使我们快速看到.

  3. 创建用户模块应用(创建子应用)

    1.添加包: 在内层meiduo_mall下添加一个包,名字叫apps,以后我们会在apps中管理所有子应用
    2.在apps包下创建子应用users: 首先进入到apps这个包中, cd…
    其次创建子应用: django-admin startapp users(子应用名)

    3.把apps增加到[导包路径]的列表中: 进入dev.py,最上面导入sys
    4.把apps的绝对路径添加到sys.path列表中:
    —第三.四步的代码—
    import os
    import sys

    Build paths inside the project like this: os.path.join(BASE_DIR, …)

    BASE_DIR =os.path.dirname(os.path.dirname(os.path.abspath(file)))
    apps_path = os.path.join(BASE_DIR, ‘apps’)
    sys.path.insert(0,apps_path)

    5.注册子应用: 进入dev.py 在找到 添加INSTALLED_APPS=[‘子应用名’,]

9.用户模型类

为什么要自定义用户模型类?
原因是: 我们的项目中需要保存,用户的手机号,但可惜的是 django 给我们提供的User类中, 没有这样的字段,可以让我们存储, 所以我们需要继承 django 工程的, 然后在里面
额外添加一个mobile字段 自定义用户模型类.

1.定义模型类: 在users.models.py中定义.必须继承自AbstractUser,在重写的类中, 添   加新的字段:mobile
代码如下:
# 导入
from django.db import models
from django.contrib.auth.models import AbstractUser

# 我们重写用户模型类, 继承自 AbstractUser
class User(AbstractUser):
    """自定义用户模型类"""

    # 额外增加 mobile 字段
    mobile = models.CharField(max_length=11, unique=True)

    # 对当前表进行相关设置: 
    class Meta:
        db_table = 'tb_users'

    # 在 str 魔法方法中, 返回用户名称
    def __str__(self):
        return self.username
2.配置模型类才能使用: 
  在dev.py中添加代码:AUTH_USER_MODEL = 'users(子应用名).User(模型类名)'
  
  django 这个框架自带的一些东西, 需要大家记一下. 这里就有一个: django自带的有 User 模型类. 这个结论是没问题的, 但是这里有一个问题: 这个User模型类中是没有mobile这个字段的. 需要我们重写这个模型类, 然后在里面给他添加一个mobile字段才可以.
  1. 迁移模型类并设置域名

    ----在pycharm终端输入—
    生成迁移文件: python manage.py makemigrations
    进行数据迁移: python manage.py migrate

    ----在Ubuntu输入----
    修改hosts文件: sudo vim /etc/hosts
    在文件中增加一行代码: 127.0.0.1 www.meiduo.site

11.在子应用 users.views.py输入类视图,开始代码

你可能感兴趣的:(python,django)