学习项目地址: GitHub - xyjw/Django3-Web: Django book
表字段 | 字段类型 | 含义 |
id | int 长度11 | primary key name |
name | varchar 长度100 | 商品名称 |
sezes | varchar 长度100 | 商品规格 |
types | varchar 长度100 | 商品类型 |
price | float | 商品价格 |
discount | float | 商品折后价格 |
stock | int | 库存 |
sold | int | 销量 |
likes | int | 收藏数量 |
created | date | 上架时间 |
img | varchar 长度100(路径地址) | 商品主图 |
details | varchar 长度100(路径地址) | 商品描述 |
表字段 | 字段类型 | 含义 |
id | int 长度11 | primary key |
firsts | varchar 长度100 | 一级分类 |
seconds | varchar 长度100 | 二级分类 |
表字段 | 字段类型 | 含义 |
id | int 长度11 | primary key |
quantity | int | 购买数量 |
commondityInfos_id | int 长度11 | 商品表信息主键 |
user_id | int 长度11 | Django内置用户表主键id |
表字段 | 字段类型 | 含义 |
id | int 长度11 | primary key |
price | float 长度11 | 订单总价 |
createed | date | 订单创建时间 |
user_id | int 长度11 | Django内置用户表主键id |
state | varchar 长度20 | 订单状态 |
搭建项目开发环境
将项目命名为Babys, 在windows CMD 命令输入Django项目创建指令,在新建的项目中创建项目应用(APP)index(网站首页功能)、commodity(商品列表和商品详细也)、shopper(购物车,个人中心、登陆注册、在线支付等)
d: 进入D盘
dir:查看
cls: 清屏
cd 目录名 进入目录
分别创建三个项目应用(APP)index、commodity、shopper
python manage.py startapp index
说明:media是网站的媒体资源库,存放图片和详细介绍图;pstatic是存放静态资源,如CSS、JavaScript、网站的界面图片;templates存放网站的HTML模板文件,即网页文件
media文件夹下创建文件夹imgs、details
pstatic文件夹下创建文件夹css、img、js、layui
templates文件夹下存放6个HTML文件:
index.html;login.html; commodity.html; details.html; shopper.html; shopcar.html
项目的功能配置
文件夹media,pstatic,templates是我们自行创建的Django运行中无法识别,需要在Django配置文件中settings.py添加这样文件夹
配置文件解释:
添加项目信息
设置模板信息
模板是较为特殊的HTML文档,配置模板路径是为了告诉Django在解析模板时如何找到模板所在的位置。
添加中间件
Django接收到用户请求时,首先经过中间件处理请求信息,然后将结果返回给用户。
一般情况Django默认的中间件配置能满足大部分需求,我们项目的MIDDLEWARE中添加LocaleMiddleWare中间件,使Django内置功能支持中文显示 注意顺序别错了
# 添加中间件LocaleMiddleware
'django.middleware.locale.LocaleMiddleware',
配置数据库
Django项目支持的数据库PostgreSQL, MySQL, Sqlite3, Oracle如果要使用其他数据库MSSQL,Redis等需要自习安装第三方插件。Django提供四种数据库引擎
'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'
此次项目使用MYSQL数据库,首先保证本地安装MYSQL数据库,然后再安装MYSQL连接模块,
Django可以使用mysqlclient和pymysql模块实现MYSQL连接
pip install mysqlclient Mysql之前安装过。。
修改数据库配置信息:
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
'ENGINE': 'django.db.backends.mysql',
'NAME': 'babys',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'POST': '3306',
}
}
配置静态资源
静态资源(css文件,JS文件,不经常变动资源)的配置主要由配置属性STATIC_URL, STATICFILES_DIRS, STATIC_ROOT完成
默认情况下Django只配置了STATIC_URL 项目在开发过程中必然会使用到CSS文件和JavaScript文件,Django默认配置信息:
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.0/howto/static-files/
STATIC_URL = 'static/'
但是我们发现在项目应用目录下并没有static文件夹,创建项目应用时候并不会自动生成,Django在调试模式下(DEBUG=True)下只能识别项目应用static文件夹下的静态资源,项目启动时由 staticfiles来查找项目静态资源
解决办法:将资源文件夹此(之前创建的pstatic文件夹)写入资源集合STATICFILES_DIRS如下:
# 添加并配置属性STATICFILES_DIRS
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'pstatic'))
STATIC_ROOT,是在项目部署服务器时使用,即(DEBUG=Flase)时才生效,主要是收集项目的整个静态资源并存放在一个新的文件夹下面(使用Django操作指令collectstatic),配置如下
# 当项目处于开发阶段DEBUG=True时,STATIC_ROOT是无效的
STATIC_ROOT = os.path.join(BASE_DIR, 'AllStatic')
配置媒体资源
对于经常变动的资源叫做动态资源如用户头像,商品主图,商品详细介绍图。有二个相关属性:MEDIA_URL, MEDIA_ROOT;
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
配置好属性后还需要将media文件夹注册到Django里让Django知道如何找到媒体文件(有点麻烦,配置属性不就可以了吗??)
from django.conf import settings
from django.contrib import admin
from django.urls import path, re_path
from django.views.static import serve
urlpatterns = [
path('admin/', admin.site.urls),
# 配置媒体资源的路由信息
re_path('media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT}, name='media'),
]
文件下载: GitHub - xyjw/Django3-Web: Django book
测试
http://127.0.0.1:8000/static/css/main.css
http://127.0.0.1:8000/media/imgs/p1.jpg
页面没找到???待解决!!