from django.shortcuts import render, redirect
from .models import CarModel, HotModel, OrderModel, ItemModel, CategoryModel, UserInfoModel, CommentModel, MarkModel
from django.http import JsonResponse
import numpy as np
def index(request):
hots = HotModel.objects.all()
categories = CategoryMzodel.objects.all()
context = {
'hots': hots,
'categories': categories
}
return render(request, 'index.html', context=context)
def login(request):
if request.method == 'GET':
return render(request, 'login.html')
else:
# 用户登录
username = request.POST.get('username')
password = request.POST.get('password')
if not (username or password):
return JsonResponse({'code': 400, 'message': '缺少必传的参数'})
user = UserInfoModel.objects.filter(username=username, password=password).first()
if not user:
return JsonResponse({'code': 400, 'message': '账号或密码错误'})
request.session['login_in'] = True
request.session['username'] = user.username
request.session['user_id'] = user.id
return JsonResponse({'code': 200})
def register(request):
if request.method == 'GET':
return render(request, 'register.html')
else:
username = request.POST.get('username')
password1 = request.POST.get('password1')
password2 = request.POST.get('password2')
address = request.POST.get('address')
phone = request.POST.get('phone')
if not (username or password1 or password2):
return JsonResponse({'code': 400, 'message': '缺少必传的参数'})
if password1 != password2:
return JsonResponse({'code': 400, 'message': '两次输入的密码不一致!'})
flag = UserInfoModel.objects.filter(username=username).first()
if flag:
return JsonResponse({'code': 400, 'message': '该用户名已存在'})
UserInfoModel.objects.create(
username=username,
password=password1,
money=0,
address=address,
phone=phone
)
return JsonResponse({'code': 200})
def logout(request):
# 退出登录
flag = request.session.clear()
return redirect('/')
def item_detail(request, item_id):
# 物品详情
item = ItemModel.objects.get(id=item_id)
comments = CommentModel.objects.filter(item_id=item_id)
user_id = request.session.get('user_id')
if user_id:
flag_mask = MarkModel.objects.filter(item_id=item_id, user_id=user_id).first()
else:
flag_mask = False
context = {
'item': item,
'comments': comments,
'flag_mask': flag_mask
}
return render(request, 'item_detail.html', context=context)
def item_list(request, category_id):
if request.method == 'GET':
# 商品列表
items = ItemModel.objects.filter(
category_id=category_id
)
context = {
'items': items
}
return render(request, 'item_list.html', context=context)
def add_car(request):
if request.method == 'POST':
# 加入购物车
item_id = request.POST.get('item_id')
user_id = request.session.get('user_id')
item = ItemModel.objects.filter(
id=item_id
).first()
CarModel.objects.create(
item_id=item_id,
user_id=user_id,
price=item.price,
)
return JsonResponse({'code': 200})
def add_order(request):
if request.method == 'POST':
# 商品购买,生成订单
item_id = request.POST.get('item_id')
user_id = request.session.get('user_id')
car_id = request.POST.get('car_id')
item = ItemModel.objects.filter(
id=item_id
).first()
# 校验余额是否充足
user = UserInfoModel.objects.filter(
id=user_id
).first()
if user.money < item.price:
return JsonResponse({'code': 400, 'message': '余额不足,请充值'})
if item.number == 0:
return JsonResponse({'code': 400, 'message': '该商品以售完'})
OrderModel.objects.create(
item_id=item_id,
user_id=user_id,
price=item.price,
)
# 扣除余额
user.money = user.money - item.price
user.save()
# 商品数量减少
item.number = item.number - 1
item.save()
if car_id:
# 如果是从购物车中点击购买的
CarModel.objects.filter(
id=car_id
).update(
is_pay=True
)
return JsonResponse({'code': 200})
def my_car(request):
user_id = request.session.get('user_id')
if request.method == 'GET':
# 我的购物车
cars = CarModel.objects.filter(
user_id=user_id,
is_pay=False
)
context = {
'cars': cars
}
return render(request, 'my_car.html', context=context)
else:
# 删除购物车
car_id = request.POST.get('car_id')
CarModel.objects.filter(
id=car_id
).first().delete()
return JsonResponse({'code': 200})
def my_order(request):
user_id = request.session.get('user_id')
if request.method == 'GET':
# 我的订单
orders = OrderModel.objects.filter(
user_id=user_id
)
context = {
'orders': orders
}
return render(request, 'my_order.html', context=context)
else:
# 删除订单
order_id = request.POST.get('order_id')
OrderModel.objects.filter(
id=order_id
).first().delete()
return JsonResponse({'code': 200})
def my_info(request):
user_id = request.session.get('user_id')
if request.method == 'GET':
# 个人信息界面
info = UserInfoModel.objects.filter(
id=user_id
).first()
context = {
'info': info
}
return render(request, 'my_info.html', context=context)
else:
# 更新个人信息
username = request.POST.get('username')
password = request.POST.get('password')
phone = request.POST.get('phone')
address = request.POST.get('address')
if not (username or password or phone or address):
return JsonResponse({'code': 400, 'message': '参数不能为空'})
UserInfoModel.objects.filter(
id=user_id
).update(
username=username,
password=password,
phone=phone,
address=address
)
return JsonResponse({'code': 200})
def category_count(request):
if request.method == 'GET':
return render(request, 'category_count.html')
else:
data_list = []
categories = CategoryModel.objects.all()
for category in categories:
name = category.name
item_count = category.itemmodel_set.all().count()
data_list.append({
'name': name,
'value': item_count
})
return JsonResponse({'code': 200, 'data': data_list})
def top_up(request):
user_id = request.session.get('user_id')
user = UserInfoModel.objects.filter(
id=user_id
).first()
if request.method == 'GET':
# 显示充值界面
context = {
'user': user
}
return render(request, 'top_up.html', context=context)
else:
money = request.POST.get('money')
if not money:
return JsonRespon
没有合适的资源?快使用搜索试试~ 我知道了~
使用Django搭建一个简易但功能齐全的购物网站
共162个文件
pyc:40个
py:23个
sample:13个
需积分: 0 0 下载量 58 浏览量
2024-01-20
11:26:50
上传
评论
收藏 5.56MB ZIP 举报
温馨提示
使用Django搭建一个简易但功能齐全的购物网站 使用的版本:python3.1.1
资源推荐
资源详情
资源评论
收起资源包目录
使用Django搭建一个简易但功能齐全的购物网站 (162个子文件)
0a8b410f59eb8abcd21e588f1a7b718db3eebd 13KB
194273ea3a3c8cd0d6f9e4ee00c515947bb57f 267B
1cc0635f2785e24de49a54fba850c86732d6a5 193B
1f5ac8af29920fe3b4c8db82cf9d4b8c4a0818 1000B
2c646a1e9037a90e7a8c44e5731be58b3e7125 305B
34a54fb791829fecf7721ae137db2c4e5fdb35 173B
37573c229788b85219cf3c5be57a6a3f62d027 409B
3d54f13a3df900c0cbfd9da7eb2034436df13d 526B
4940ff01225972ee6058d8c859b43c10f3ff53 543B
494256cb05820dbf968146ae3d2b97f656a9cd 79B
5232ab113655da9c5059933ca4b042bcc8095b 281B
5c8d96c2be669afb498d3d6566c69d8acf9054 2KB
76873c5c0917aec78937331700ad66fb0e514f 830B
7d529a8143db0d1653139640b19a1f5d4c7aef 12KB
922ef17f782f3a487c078474615bd0a1616706 994B
96335ff6a02021199d731eaa19ccadd1dc8af8 25KB
968cd99452acccbc7b78f4e2485517732efea9 528B
9b799a49fe17345db99d01da8921e998088bf4 320B
bacc4f3280bf67b23783e00567a331cd70ffaa 856B
c6022f2982e8dae64cebd6b9a2b59f2547faad 35KB
cc478e98a6f7bc3c232e404192b6f7f111fba6 369B
COMMIT_EDITMSG 16B
config 306B
bootstrap.min.css 119KB
post_detail.css 1KB
index.css 1KB
front_base.css 793B
signbase.css 513B
da5b1d7bf179d926b359fe9e9418248d8ba980 71B
description 73B
e5c8ea05f62794d56b07f99554e1844184dd31 587B
e690c11d3752193f541df00d1a1e26de670752 282B
exclude 240B
.gitignore 2KB
.gitignore 184B
HEAD 324B
HEAD 176B
HEAD 32B
HEAD 23B
index.html 4KB
item_detail.html 3KB
base.html 3KB
my_car.html 2KB
register.html 2KB
my_info.html 2KB
item_list.html 1KB
my_order.html 1KB
item_recommend.html 1KB
login.html 882B
top_up.html 841B
category_count.html 651B
pack-40210657bb3353682f369d3f71bbdf46998e54aa.idx 3KB
a_project.iml 785B
index 6KB
img_04_05_21_29_59.jpg 931KB
img_04_05_21_28_36.jpg 669KB
img_04_05_21_29_01.jpg 377KB
img_04_05_21_29_53.jpg 233KB
img_04_05_21_28_01.jpg 158KB
img_04_05_21_30_38.jpg 132KB
echarts.min.js 999KB
jquery.min.js 87KB
bootstrap.min.js 39KB
item_detail.js 3KB
category_count.js 2KB
my_car.js 2KB
register.js 1KB
my_info.js 1020B
login.js 994B
my_order.js 857B
top_up.js 798B
item_list.js 484B
master 324B
master 139B
master 41B
master 41B
pack-40210657bb3353682f369d3f71bbdf46998e54aa.pack 2.65MB
packed-refs 114B
views.py 12KB
0001_initial.py 5KB
models.py 4KB
settings.py 4KB
admin.py 2KB
0007_markmodel.py 1KB
0005_commentmodel.py 1KB
urls.py 1KB
urls.py 1012B
manage.py 691B
0003_userinfomodel_phone_alter_userinfomodel_address.py 681B
0004_remove_carmodel_number_remove_ordermodel_number.py 491B
0002_userinfomodel_address.py 482B
0006_commentmodel_content.py 470B
wsgi.py 419B
asgi.py 419B
content_process.py 370B
apps.py 194B
tests.py 63B
__init__.py 53B
__init__.py 0B
__init__.py 0B
共 162 条
- 1
- 2
资源评论
dajuweizhonga
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功