# 前言
> 这是一个Java里Java气的`django`项目,有熟悉的bean实体类(在models.py),有dao用于数据库操作(在dao.py)
- 本项目前后端进行了分离,前端使用vue实现,并且前端代码已经打包好放在`static`目录下
- 后端使用django的views.py来制作api接口,具体请求接口可以查看`API接口文档.md`
> 环境要求:MySQL 8、python3.11、django4.2、pymysql
# 如何运行
## 1、下载本项目到你的电脑后解压
![下载](/sports_shop_backend_war/%E8%88%8D%E4%B8%8D%E5%BE%97_%E5%AE%9D%E8%B4%9D%E5%9E%83%E5%9C%BE%E6%A1%B6/img/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-05-04%20005530.png)
## 2、附加数据库
将根目录下的 `sports_shop.sql` 附加到你的mysql中
![附加数据](/sports_shop_backend_war/%E8%88%8D%E4%B8%8D%E5%BE%97_%E5%AE%9D%E8%B4%9D%E5%9E%83%E5%9C%BE%E6%A1%B6//img/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-05-04%20005814.png)
### 3、修改数据库连接语句
在`sports_shop_backend_war/dao.py`文件中,将登录名和密码修改为你mysql的配置
![修改数据库连接语句](/sports_shop_backend_war/%E8%88%8D%E4%B8%8D%E5%BE%97_%E5%AE%9D%E8%B4%9D%E5%9E%83%E5%9C%BE%E6%A1%B6//img/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-05-04%20010056.png)
### 4、pip安装所需的库
一共有如下两个个:
- `pip install django==4.2`
- `pip install pymysql`
### 5、运行项目
前端已经写死了请求后端api的基准地址为`http://127.0.0.1:8888`
因此需要切到 `项目根目录` 执行如下命令:
```shell
python .\manage.py runserver 8888
```
然后,就可以项目就跑起来了
![运行](/sports_shop_backend_war/%E8%88%8D%E4%B8%8D%E5%BE%97_%E5%AE%9D%E8%B4%9D%E5%9E%83%E5%9C%BE%E6%A1%B6//img/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-05-04%20011718.png)
# 效果总览
![运行](/sports_shop_backend_war/%E8%88%8D%E4%B8%8D%E5%BE%97_%E5%AE%9D%E8%B4%9D%E5%9E%83%E5%9C%BE%E6%A1%B6//img/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-05-04%20011853.png)
![运行](/sports_shop_backend_war/%E8%88%8D%E4%B8%8D%E5%BE%97_%E5%AE%9D%E8%B4%9D%E5%9E%83%E5%9C%BE%E6%A1%B6//img/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-05-04%20011949.png)
![运行](/sports_shop_backend_war/%E8%88%8D%E4%B8%8D%E5%BE%97_%E5%AE%9D%E8%B4%9D%E5%9E%83%E5%9C%BE%E6%A1%B6//img/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-05-04%20012035.png)
![运行](/sports_shop_backend_war/%E8%88%8D%E4%B8%8D%E5%BE%97_%E5%AE%9D%E8%B4%9D%E5%9E%83%E5%9C%BE%E6%A1%B6//img/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-05-04%20012112.png)
![运行](/sports_shop_backend_war/%E8%88%8D%E4%B8%8D%E5%BE%97_%E5%AE%9D%E8%B4%9D%E5%9E%83%E5%9C%BE%E6%A1%B6//img/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-05-04%20012148.png)
![运行](/sports_shop_backend_war/%E8%88%8D%E4%B8%8D%E5%BE%97_%E5%AE%9D%E8%B4%9D%E5%9E%83%E5%9C%BE%E6%A1%B6//img/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-05-04%20012225.png)
# 如何入手
- static 文件夹是前端打包过后的代码,具体前端代码可以移步:https://gitee.com/kang-zhenbin/sports_shop_front
- django_shop是项目,sports_shop_backend_war是app。一下讲的都是app
- models.py里面编写了对应数据库表的实体类
- dao.py里面编写了数据库连接方法,已经对应表的增删改查操作
- urls.py和views.py以及service.py 一起完成了api的逻辑
- 其中urls.py是请求的路由分发逻辑
- views.py和service.py完成了api逻辑实现
# 踩坑记录
### 2023/4/25
django自带的ORM对mysql进行增删改查很奇怪,会给你的数据库生成一大堆表(似乎帮你搞好了一个后台管理系统)
与spring开发并不相同,没法用实体类对应数据库表的习惯来理解这东西
Template 这东西并不能挂载静态资源
得用static来挂载静态资源,默认访问路径是 `ip+端口号/static/xxx`
### 2023/4/26
挂载vue打包后的静态文件,只需在urls.py的urlpatterns中添加一行:
```path('', RedirectView.as_view(url='/static/index.html', permanent=False), name='index'),```
### 2023/4/27
python这语言简直是非主流,当你习惯了主流C,Java,JavaScript之类的语言,再来写python,简直要世界观崩塌
关于实体类:
- 1.文件名也算名,并不是文件名与类名一致就可以了。导入的时候要 `entity.User.User` 是的,第一个是文件名,第二个是类名
- 2.如果你的项目分了多个子目录,比如dao、entity、util。那么你想要在dao中调用entity,你还得用`sys.path.appedn()`去拼接路径
- 3.如果你要调用一个python文件中的类,然后这个文件的类又引用了其他文件的类,你还得改这个文件的类import的路径,去迎合最大的那个调用类。。。。。amazing
- 4.在python中定义一个类 简直就是依托答辩。。。。
### 2023/4/27
不错不错,逐渐适应了这个语言
django现在暂时只用来挂载我vue打包好的静态页面,默认进入`loclahost:8000`的时候,自动路由跳转到`localhost:8000/static/index.html`
在django_shop项目下,有一个名为sports_shop_backend_war的app
这个app里面目前主要编写的文件夹和文件有
- dao文件夹
- entity文件夹
- test.py
entity里面是实体类
dao里面是一些未来service将要用到的数据库操作
test.py用来测试写好的代码,已经测了各个实体类,还有一些XxxDaoImpl类下的方法
### 2023/4/28
由于python奇葩的导包机制,比如
```shell
¬父级目录∨:
urls.py
views.py
¬dao文件夹∨:
UserDao.py
OrderDao.py
Shopping_cartDao.py
GoodDao.py
CommentDao.py
Mini_Shopping_cartDao.py
¬entity文件夹∨:
User.py
Order.py
Shopping_cart.py
Good.py
Comment.py
Mini_Shopping_cart.py
```
然后,
我在那些dao操作的类中,引用了entity文件夹里面的实体类
```python
from entity.User import User
```
我在那些service操作的类中,引用了dao文件夹里面的dao数据访问类
```python
from dao.UserDao import UserDaoImpl
```
最后,
我在views.py开始编写后端网络api请求:
```python
from django.http import HttpResponse, JsonResponse
from django.shortcuts import render
# 服务层
from .service.UserService import UserService
# Create your views here.
def index(request):
return HttpResponse('欢迎测试')
# 登录API
def login(request):
username = request.POST.get('username')
password = request.POST.get('password')
return JsonResponse(UserService().login(username,password))
```
在urls.py绑定请求路径:
```python
# app/urls.py
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="index"),
path("login", views.login, name="login")
]
```
一通操作猛如虎,一开测试凉凉
![错误示范](/sports_shop_backend_war/%E8%88%8D%E4%B8%8D%E5%BE%97_%E5%AE%9D%E8%B4%9D%E5%9E%83%E5%9C%BE%E6%A1%B6/img/%E9%94%99%E8%AF%AF%E7%A4%BA%E8%8C%83.png)
![错误示范](/sports_shop_backend_war/%E8%88%8D%E4%B8%8D%E5%BE%97_%E5%AE%9D%E8%B4%9D%E5%9E%83%E5%9C%BE%E6%A1%B6/img/%E5%AF%BC%E5%8C%85%E6%8A%A5%E9%94%99%E4%BF%A1%E6%81%AF.png)
最后的解决办法只能是:
- 把实体类一股脑粘贴到models.py文件内
- 把dao数据访问类一股脑粘贴到models.py同级的dao.py文件内
这个时候在回来写`views.py`,`urls.py`作为control
### 2023/4/29
#### 关于多个类存进字典再转换成JSON数据
```python
def login (self,username:str,password:str):
'''通过用户ID查询用户信息
@param 用户名,
@param 密码,
@return {User+Meta} 字典数据'''
user_id = UserDaoImpl().selectByNamePWD(username,password)
data = UserDaoImpl().selectByID(user_id)
meta = Meta("登录成功",200)
response = {
'data': data,
'meta': meta
}
json_str = json.dumps(response, default=lambda o: o.__json__() if
没有合适的资源?快使用搜索试试~ 我知道了~
基于Django框架实现的运动商城系统,Python课程设计
共119个文件
py:41个
pyc:23个
jpg:16个
需积分: 5 0 下载量 20 浏览量
2024-11-25
10:20:45
上传
评论
收藏 12.2MB ZIP 举报
温馨提示
基于Django框架实现的运动商城系统,Python课程设计
资源推荐
资源详情
资源评论
收起资源包目录
基于Django框架实现的运动商城系统,Python课程设计 (119个子文件)
chunk-vendors.e92fd658.css 206KB
app.282f74b9.css 4KB
index.html 665B
favicon.ico 4KB
favicon2.ico 2KB
dock2.66d71121.jpeg 36KB
lunbo1.5cb0f226.jpg 1.38MB
lunbo2.758bcac6.jpg 1.15MB
lunbo4.5f81ba56.jpg 945KB
nonyao.jpg 285KB
applewatchse.jpg 111KB
huawei.jpg 111KB
applewatchSeries8.jpg 107KB
xiaomi.jpg 104KB
lunbo3.f0aba4b3.jpg 103KB
oppo.jpg 102KB
user.jpg 79KB
R.jpg 44KB
kzb68up.jpg 33KB
mainUserPic.c420635d.jpg 25KB
asideLogin.c4702ae3.jpg 15KB
asideRegister.684c313b.jpg 14KB
chunk-vendors.eeae9080.js 1.91MB
app.a39ff3ea.js 31KB
VSWorkspaceState.json 211B
PythonSettings.json 95B
ProjectSettings.json 35B
LICENSE 1KB
read.lock 0B
chunk-vendors.eeae9080.js.map 9.7MB
app.a39ff3ea.js.map 119KB
与bing的对话.md 25KB
API接口文档.md 14KB
README.md 10KB
舍不得_初版瞎造python_bean.md 7KB
说明.md 2KB
屏幕截图 2023-05-04 011949.png 1.44MB
屏幕截图 2023-05-04 012035.png 960KB
屏幕截图 2023-05-04 011853.png 789KB
屏幕截图 2023-05-04 012225.png 280KB
屏幕截图 2023-05-04 012148.png 235KB
屏幕截图 2023-05-04 012112.png 207KB
屏幕截图 2023-05-04 010056.png 114KB
屏幕截图 2023-05-04 005530.png 62KB
错误示范.png 44KB
导包报错信息.png 39KB
屏幕截图 2023-05-04 005814.png 36KB
屏幕截图 2023-05-04 011718.png 21KB
dao.py 28KB
views.py 16KB
models.py 13KB
OrderDao.py 7KB
Shopping_cartDao.py 6KB
UserDao.py 6KB
CommentDao.py 5KB
settings.py 4KB
question.py 4KB
tests.py 3KB
GoodsDao.py 3KB
Order.py 2KB
Shopping_cart.py 2KB
User.py 2KB
urls.py 2KB
service.py 1KB
Comment.py 1KB
urls.py 1KB
Good.py 1KB
Mini_entity.py 876B
UserService.py 760B
MysqlHelper.py 698B
manage.py 667B
views.py 599B
Meta.py 535B
0001_initial.py 535B
wsgi.py 399B
asgi.py 399B
models.py 305B
urls.py 256B
views.py 251B
apps.py 175B
apps.py 146B
admin.py 63B
admin.py 63B
tests.py 60B
__init__.py 0B
__init__.py 0B
__init__.py 0B
__init__.py 0B
__init__.py 0B
dao.cpython-311.pyc 32KB
views.cpython-311.pyc 23KB
models.cpython-311.pyc 16KB
settings.cpython-311.pyc 3KB
service.cpython-311.pyc 2KB
urls.cpython-311.pyc 2KB
urls.cpython-311.pyc 2KB
UserService.cpython-311.pyc 1KB
views.cpython-311.pyc 1KB
0001_initial.cpython-311.pyc 1018B
wsgi.cpython-311.pyc 711B
共 119 条
- 1
- 2
资源评论
呆呆小雅
- 粉丝: 255
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功