python美多商城项目百度网盘_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设计模式

设计模式的核心思想: 分工 解耦

项目工程搭建

准备代码仓库

进入桌面: cd Desktop

准备仓库: git clone 远端仓库地址

创建自己的分支: git checkout -b 分支名

将分支推送到远端:git push origin 分支名

创建美多商城

创建虚拟环境: makvirtualenv 环境名 -p python3

(-p : 指定创建的虚拟环境中使用的 python 解释器版本)

在虚拟环境中安装Django: pip install django==2.2.5

利用Django创建工程: Django-admin startproject 项目名

pycharm打开项目

配置开发环境(必要的)

准备配置文件: 在内层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后运行项目

配置模板文件夹

添加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....把这两行注释掉,再运行

配置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 ===> 利用客户端 ===> 保存服务端

配置日志

在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的控制台就会把这些信息打印出来, 使我们快速看到.

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

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字段才可以.

迁移模型类并设置域名

----在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输入类视图,开始代码

原文链接:https://blog.csdn.net/li_ying_ze/article/details/108695169

你可能感兴趣的:(python美多商城项目百度网盘_Django项目配置_美多商城)