Django_shop
Python
Python, CSS, JavaScript, HTML
共111个文件
py: 36
pyc: 23
jpg: 16
png: 12
md: 5
json: 3
css: 2
ico: 2
js: 2
map: 2
基于Django框架实现的运动商城系统,python课程设计
前言
这是一个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、下载本项目到你的电脑后解压
2、附加数据库
将根目录下的 sports_shop.sql 附加到你的mysql中
3、修改数据库连接语句
在sports_shop_backend_war/dao.py文件中,将登录名和密码修改为你mysql的配置
4、pip安装所需的库
一共有如下两个个:
pip install django==4.2
pip install pymysql
5、运行项目
前端已经写死了请求后端api的基准地址为http://127.0.0.1:8888
因此需要切到 项目根目录 执行如下命令:
python .\manage.py runserver 8888
然后,就可以项目就跑起来了
效果总览
如何入手
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奇葩的导包机制,比如
¬父级目录∨:
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文件夹里面的实体类
from entity.User import User
我在那些service操作的类中,引用了dao文件夹里面的dao数据访问类
from dao.UserDao import UserDaoImpl
最后,
我在views.py开始编写后端网络api请求:
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绑定请求路径:
# app/urls.py
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="index"),
path("login", views.login, name="login")
]
一通操作猛如虎,一开测试凉凉
最后的解决办法只能是:
把实体类一股脑粘贴到models.py文件内
把dao数据访问类一股脑粘贴到models.py同级的dao.py文件内
这个时候在回来写views.py,urls.py作为control
2023/4/29
关于多个类存进字典再转换成JSON数据
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 isinstance(o, (User, Meta)) else None, ensure_ascii=False)
print(json_str)
return (json_str)
关于获取AJAX发送过来的POST数据
request.POST.GET('XXX')无法使用
先把request.body 用json转换出来,在.get('XXX')也不行
打印request.POST 打印 request.body 啥也没有
翻了大半天资料找不出方法
最后死马当活马医,瞎写用request.GET.GET('XXX')就可以,这就很神奇
def login(request):
username = request.GET.get('username')
password = request.GET.get('password')
print(request.body)
# print("=============================")
# concat = request.POST
# postBody = request.body
# print(concat)
# print(type(postBody))
# print(postBody)
# json_result = json.loads(postBody)
# print(json_result)
return HttpResponse(UserService().login(username,password),content_type="application/json")
2023/5/4
如何进行接受上传的文件
使用 request.FILES.get('表单name') 即可获取到上传过来的文件
其中request.FILES.get('表单name').name可以获取到文件名
request.FILES.get('表单name').read()可以读取文件的二进制数据流
如何保存到目标目录下
千万别去导入什么 项目名.settings的BASE_DIR
这玩意导进来空空如也
你只需要这样操作
一行获取当前项目的位置
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
再来一行拼接到文件目标位置
upload_path = BASE_DIR + '/static/picture/'+fileName
千万别搞什么os.path.join()来拼接路径,你的BASE_DIR会被吞的
具体实现代码:
import os
# 15 上传用户头像 http://127.0.0.1:8888/static/picture/xXxX.jpg
def UserPicture(request):
if request.method == 'POST':
fileName = request.FILES.get('file').name
# 当前脚本的绝对路径
BASE_DIR = os
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
项目概述:本项目是一款基于Python的Django框架开发的运动商品电商平台。该平台融合了Python、CSS、JavaScript和HTML等多种编程语言,共包含111个文件,其中Python源文件36个,编译后的pyc文件23个,以及其他资源文件如jpg图片16张、png图片12张、Markdown文档5份、JSON配置文件3个、CSS样式表2个、图标文件2个、JavaScript脚本2个和source map文件2个。此项目不仅为用户提供了丰富的运动商品浏览与购买体验,同时也是一次针对Python课程设计的实践与应用。
资源推荐
资源详情
资源评论
收起资源包目录
基于Django框架开发的运动商品电商平台源码 (118个子文件)
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
read.lock 0B
chunk-vendors.eeae9080.js.map 9.7MB
app.a39ff3ea.js.map 119KB
与bing的对话.md 25KB
API接口文档.md 14KB
舍不得_初版瞎造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
models.cpython-311.pyc 636B
views.cpython-311.pyc 633B
共 118 条
- 1
- 2
资源评论
沐知全栈开发
- 粉丝: 4774
- 资源: 3423
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功