学习项目地址: GitHub - xyjw/Django3-Web: Django book
商品信息表
表字段 字段类型 含义 id int 长度11 primary key 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(购物车,个人中心、登陆注册、在线支付等)
分别创建三个项目应用(APP)index、commodity、shopper
python manage.py startapp index
说明:media是网站的媒体资源库,存放图片和详细介绍图;pstatic是存放静态资源,如CSS、JavaScript、网站的界面图片;templates存放网站的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
页面没找到???