家喻户晓的生鲜系统

django生鲜系统卖家后端代码

1.首页

#卖家主路由
from django.urls import path,include
from seller import urls as seller_urls
path('', index),
#卖家子路由
 #卖家注册
    path('register_seller/',Register_seller.as_view()),
    #卖家登录
    path('login_seller/',Login_seller.as_view()),
    #卖家管理后台首页
    path('index_seller/',index),
    #退出
    path('quit_login/',Quit_login.as_view()),
    #商品类型列表
    path('type_list/',Type_list),
    #添加商品类型
    path('type_add/',Type_add),
    #删除商品类型
    path('type_delete/',Type_Delete),
    #商品类型修改编辑
    path('type_change/',Type_Change),
    #商品列表
    path('goods_list/',Goods_List),
    #商品添加
    path('goods_add/',Goods_Add),
    #商品删除
    path('goods_delete/',Goods_Delete),
    #商品修改编辑
    path('goods_change/',Goods_change),

2.数据库迁移和写入

#models写入数据库
#卖家表
class Seller(models.Model):
    user = models.CharField(max_length=128,null=False,blank=False,verbose_name='卖家用户名')
    nickname = models.CharField(max_length=128,null=False,blank=False,verbose_name='卖家昵称')
    password = models.CharField(max_length=128,null=False,blank=False,verbose_name='卖家密码')
    createtime = models.DateTimeField(verbose_name='卖家创建时间',auto_now_add=True)

3.视图
导入数据库的模块

from seller.models import Goods
from django.shortcuts import render, redirect
from django.views import View
#加密
from django.contrib.auth.hashers import make_password, check_password

from seller import models
import datetime
#装饰器
from shop.settings import UPLOADFILES_DIRS

4.装饰器

def decorator(func):
    def inner(request,*args,**kwargs):
        user = request.session.get('seller_user_session')
        id = request.session.get('seller_id_session')
        nickname = request.session.get('seller_nickname_session')

        if user and id and nickname:
            return func(request,*args,**kwargs)
        else:
            return redirect('/seller/login_seller/')
    return inner

5.卖家注册

class Register_seller(View):
    def get(self,request):
        return render(request,'seller/register.html')
    def post(self,request):
        user = request.POST.get('user')
        password1 = request.POST.get('password1')
        password2 = request.POST.get('password2')
        nickname = request.POST.get('nickname')
        #判断卖家用户是否注册,信息是否为空,密码是否一致,登录成功,将信息存入数据库
        if user=='' or nickname=='' or password1=='' or password2 =='':
            error_msg='用户信息不能为空'
            return render(request, 'seller/register.html',locals())

        is_seller = models.Seller.objects.filter(user=user).first()

        if is_seller:
            error_msg='用户已注册'
            return render(request,'seller/login.html',locals())

        if password1 != password2:
            error_msg='密码不一致'
            return render(request, 'seller/register.html',locals())
        models.Seller.objects.create(user=user,nickname=nickname,password=make_password(password1)).save()
        succeed_msg='注册成功'
        return render(request,'seller/login.html',locals())

6.卖家登录

class Login_seller(View):
    def get(self,request):
        return render(request,'seller/login.html')
    def post(self,request):
        error_msg=''
        succeed_msg=''
        user = request.POST.get('user')
        password = request.POST.get('password')
        if user=='' or password=='':
            error_msg = '用户信息不能为空'
            return render(request,'seller/login.html',locals())

        is_seller = models.Seller.objects.filter(user=user).first()
        if not is_seller:
            error_msg = '用户未注册'
            return render(request,'seller/login.html',locals())

        if not check_password(password,is_seller.password) :
            error_msg='密码不正确'
            return render(request,'seller/login.html',locals())
        #登录成功了
        request.session['seller_id_session'] = is_seller.id
        request.session['seller_user_session'] = is_seller.user
        request.session['seller_nickname_session'] = is_seller.nickname

        return redirect('/seller/index_seller/')

7.卖家管理后台首页

@decorator
def index(request):
    if request.method =='GET':
        ip = request.META.get('REMOTE_ADDR')
        now_time = datetime.datetime.now()
        #版本
        ver = '1.0.0'
        #服务器地址
        ip = ip
        #winnt
        WINNT = 'WINNT'
        #django版本号
        django = '3.0.3'

        return render(request,'seller/index.html',locals())

8.退出

class Quit_login(View):
    def get(self,request):
        request.session.flush()
        return redirect('/seller/login_seller/')

9.商品类型列表

@decorator
def Type_list(request):
   if request.method=='GET':
        #获取商品信息
        type_obj_list = models.Types.objects.all()
        #将数据放到页面上
        return render(request,'seller/type_list.html',locals())

10.添加商品类型

@decorator
def Type_add(request):
    if request.method=='GET':
        return render(request,'seller/type_add.html')
    if request.method=='POST':
        #对信息进行提示
        error_msg = ''
        succeed_msg = ''
        type_name = request.POST.get('type_name')
        #判断填入信息不能为空;判断类型是否存在,写入数据库
        if type_name == '':
            error_msg ='信息不能为空'
            return render(request,'seller/type_add.html',locals())
        is_type = models.Types.objects.filter(type = type_name).first()
        if is_type:
            error_msg='类型已存在'
            return render(request, 'seller/type_add.html', locals())
        models.Types.objects.create(type = type_name).save()
        return redirect('/seller/type_list/')

11.删除商品类型

@decorator
def  Type_Delete(request):
    if request.method=='GET':
        #类型ID
        id = request.GET.get('id')
        #根据类型id,删除相应的商品类型
        models.Types.objects.filter(id=int(id)).delete()
        return redirect('/seller/type_list')

12.商品类型修改编辑

@decorator
def Type_Change(request):
    if request.method=='GET':

        #根据id 查出想用的商品类型
        id = request.GET.get('id')
        type_obj = models.Types.objects.filter(id=int(id)).first()

        return render(request,'seller/type_change.html',locals())

    if request.method == 'POST':
        #类型id  type_name 类型名称
        #判断填写的信息不为空;判断类型不能重复;修改成功,写入数据库
        id =request.POST.get('id')
        type_name =request.POST.get('type_name')
        #对信息进行提示
        error_msg = ''
        succeed_msg = ''
        if id =='' or type_name == '':
            error_msg = '参数错误'
            return render(request, 'seller/type_change.html', locals())
        is_type = models.Types.objects.filter(type=type_name).first()
        if is_type:
            error_msg = '类型已存在'
            return render(request, 'seller/type_add.html', locals())

        models.Types.objects.filter(id=int(id)).update(type=type_name)
        return redirect('/seller/type_list/')

13.商品列表

@decorator
def Goods_List(request):
    if request.method == 'GET':
        goods_obj_list = models.Goods.objects.all()
        return render(request,'seller/goods_list.html',locals())

14.商品添加

@decorator
def Goods_Add(request):
   if request.method=='GET':
   #查询
        type_obj_list = models.Types.objects.all()
        return render(request,'seller/goods_add.html',locals())

   if request.method=='POST':
        # 对信息进行提示
        error_msg = ''
        succeed_msg = ''
        #商品编号
        goods_num = request.POST.get('goods_num')
        #相片名称
        goods_name = request.POST.get('goods_name')
        #商品原价
        goods_oprice = request.POST.get('goods_oprice')
        #商品现价
        goods_xprice = request.POST.get('goods_xprice')
        #商品库存
        goods_count = request.POST.get('goods_count')
        #商品描述
        goods_description = request.POST.get('goods_description')
        #商品类型
        goods_type = request.POST.get('goods_type')
        #商品详情
        goods_content = request.POST.get('goods_content')
        #商品缩略图
        goods_img = request.FILES.get('userfiles')
        #卖家发布
        seller = request.session['seller_id_session']
        #判断商品编号是否存在,保存缩略图,存入数据库
        is_goods = models.Goods.objects.filter(goods_num=goods_num).first()
        if is_goods:
            error_msg='商品已存在'
            return render(request,'seller/goods_add.html',locals())
        path_url = os.path.join(UPLOADFILES_DIRS[0],goods_img.name)
        with open(path_url,'wb') as f:
            for i in goods_img.chunks():
                f.write(i)
            f.close()
            goods_img_url = '/static/upload/'+ goods_img.name

            models.Goods.objects.create(
                    goods_num=goods_num,
                    goods_name=goods_name,
                    goods_oprice=goods_oprice,
                    goods_xprice=goods_xprice,
                    goods_count=goods_count,
                    goods_desc=goods_description,
                    type_id=int(goods_type),
                    goods_detail=goods_content,
                    seller_id=int(seller),
                    goods_img=goods_img_url
                ).save()

        return redirect('/seller/goods_list/')

15.商品删除

@decorator
def Goods_Delete(request):
    if request.method=='GET':
        id = request.GET.get('id')
        models.Goods.objects.filter(id=int(id)).delete()
        return redirect('/seller/goods_list/')

16.商品修改编辑

@decorator
def Goods_change(request):
    if request.method=='GET':
        #?id= 商品id
        id=request.GET.get('id')

        type_obj_list = models.Types.objects.all()
        goods_obj = models.Goods.objects.filter(id=int(id)).first()
        return render(request,'seller/goods_change.html',locals())
    if request.method=='POST':
        # 对信息进行提示
        error_msg = ''
        succeed_msg = ''
        #商品id
        id=request.POST.get('id')
        # 商品编号
        goods_num = request.POST.get('goods_num')
        # 相片名称
        goods_name = request.POST.get('goods_name')
        # 商品原价
        goods_oprice = request.POST.get('goods_oprice')
        # 商品现价
        goods_xprice = request.POST.get('goods_xprice')
        # 商品库存
        goods_count = request.POST.get('goods_count')
        # 商品描述
        goods_description = request.POST.get('goods_description')
        # 商品类型
        goods_type = request.POST.get('goods_type')
        # 商品详情
        goods_content = request.POST.get('goods_content')
        # 商品缩略图
        goods_img = request.FILES.get('userfiles')
        # 卖家发布
        seller = request.session['seller_id_session']
        # 保存缩略图,存入数据库
        path_url = os.path.join(UPLOADFILES_DIRS[0], goods_img.name)
        #写入图片
        with open(path_url, 'wb') as f:
            for i in goods_img.chunks():
                f.write(i)
            f.close()
            goods_img_url = '/static/upload/' + goods_img.name
			#数据库查询
            models.Goods.objects.filter(id=int(id)).update(
                goods_num=goods_num,
                goods_name=goods_name,
                goods_oprice=goods_oprice,
                goods_xprice=goods_xprice,
                goods_count=goods_count,
                goods_desc=goods_description,
                type_id=int(goods_type),
                goods_detail=goods_content,
                seller_id=int(seller),
                goods_img=goods_img_url
            )
		#重定向
        return redirect('/seller/goods_list/')

注意:数据库命名要与后端定义名字一致,每次改变数据库中内容是都需要重新写入和迁移

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值