概述
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 sysBuild 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输入类视图,开始代码
最后
以上就是清新红牛为你收集整理的Django项目配置_美多商城Django项目_美多商城Build paths inside the project like this: os.path.join(BASE_DIR, …)的全部内容,希望文章能够帮你解决Django项目配置_美多商城Django项目_美多商城Build paths inside the project like this: os.path.join(BASE_DIR, …)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复