前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python Django web 开发商品询价系统

Python Django web 开发商品询价系统

原创
作者头像
如此这般那便是极好
发布2024-05-13 16:39:53
9403
代码可运行
发布2024-05-13 16:39:53
运行总次数:3
代码可运行

目前我需要开发一个商品的询价系统,大致功能如下:

1.用户登录

2.用户注销

3.用户注册

4.用户已询价商品(询价需要邮件通知相关人员)

5.商品页(商品详情页、单个商品询价)

用户登录

那么在登录的时候,我们需要明白,客户端服务器是如何判断用户的

如以下是Django中的视图函数,功能是登录,在登录时首先验证密码,其次验证成功后设置set cookie 值,这个值就是用来判断当前用户是谁,下面这句代码的意思设置cookie的值中添加usid的值,时间为1个小时,一个小时以后,就自动退出

代码语言:python
代码运行次数:0
复制
response.set_cookie('usid',user.first().id,max_age=3600)
代码语言:python
代码运行次数:3
复制
def login(request):
    # 判断请求是否是post
    if request.method == 'POST':
        # 获取邮箱和密码信息
        email = request.POST.get('email')
        passwd = request.POST.get('passwd')
        # 查询用户是否存在于数据库中
        user = UserMondel.objects.filter(email=email)
        if user.exists():
            # 存在则对比密码,注意,密码要进行加密后进行对比
            inputpasswd = sha256_encrypt(passwd)
            print(inputpasswd)
            # 对比密码,
            if user.first().password == inputpasswd:
                # 密码校验正确,则设置cookie信息,时间为1小时失效
                response = redirect(reverse('index'))
                response.set_cookie('usid',user.first().id,max_age=3600)
                return response
            else:
                return HttpResponse('用户名或密码错误')

        else:
            return HttpResponse('用户名不存在,请先注册')

    return render(request, 'login.html',)

用户注销

用户注销非常简单,只需要将cookie的值删除掉就行了,如下:

代码语言:python
代码运行次数:0
复制
def logout(request):
    # 反向解析至登录页
    repsone = redirect(reverse('login'))
    # 删除响应的usid值
    repsone.delete_cookie('usid')
    return repsone

用户注册

用户注册,这部分需要验证的东西比较多,包括邮箱是否正确,验证码是否填写完毕,

我之前有写过关于Django下的验证码,有兴趣可以先去看看

https://cloud.tencent.com/developer/article/2413777

在注册的时候,对密码要进行简单加密处理,不要直接存字符串,以免泄露,使用post方式获取当前请求的数据,已便做验证,我下面也对验证码的时间做验证

代码语言:python
代码运行次数:0
复制
def register(request):
    # 判断提交过来的数据是否使用了post方法
    if request.method == 'POST':
        # 如果使用了post方法,我们获取邮件、用户名和密码
        email = request.POST.get('email')
        uname = request.POST.get('uname')
        passwd = request.POST.get('passwd')
        phone = request.POST.get('phone')
        company = request.POST.get('company')
        emailcode = request.POST.get('emailcode')
        codevalue = request.POST.get('codevalue')
        imagesvalue = request.POST.get('imagesvalue')
        if imagesvalue == None:
            return render(request, 'register.html', )
        # 获取图片的值,从数据库中找到,并对比是否相等
        codedata = validationimage.objects.all()[int(imagesvalue)].code
        if codedata != codevalue:
            return JsonResponse({'data': "图片验证码错误"})
        # 获取此次邮件发送的验证码
        verifica = verification.objects.filter(email=email,code=emailcode).first()
        #
        # 获取当前时间
        now = timezone.now()
        # 如果邮件验证码存在则对比时间是否在1小时之内
        if verifica:
            if now < verifica.time:
                # 使用邮箱查询用户是否存在,
                user = UserMondel.objects.filter(email=email)
                # 存在则提示"用户已存在"
                if user.exists():
                    return JsonResponse({'data': "用户已存在"})
                else:
                    # 不存在则要进行创建,并对密码进行加密存储
                    password = sha256_encrypt(passwd)
                    UserMondel.objects.create(email=email, uname=uname, password=password, phone=phone, company=company)
                return JsonResponse({'data': "已注册成功"})
            else:
                return JsonResponse({'data': "验证码已过期"})
        else:
            return JsonResponse({'data': "验证码已过期"})
    else:
        return render(request, 'register.html',)

用户已询价商品

已询价商品,本质上就是将用户点击询价的商品存储的数据库中,然后渲染出来即可

inquiry:是数据库,存放这关于用户点击询价后按钮保存的数据,user是此时登录的用户,显示在主页上面

代码语言:python
代码运行次数:0
复制
def user_inquiry(request):
    # 获取cookie中的usid值,不存在则默认0
    usid = request.COOKIES.get('usid', 0)
    # 查询数据库中是否存在用户
    user = UserMondel.objects.filter(id=usid).first()
    # 如果usid等于0,则代表用户不存在,则需定位到登录页
    if usid == 0:
        return redirect(reverse('login'))
    userinfo = UserMondel.objects.filter(id=usid).first()
    inquiry = Inquiry.objects.filter(user=userinfo,is_delete=False)
    return render(request, 'user_inquiries.html', {'userinquir': inquiry, "user": user})

备注:

在使用IIS搭建Django的项目时,我发起了一个GET请求,如下面所示,发现在使用runserver时inquiry.exists()为True 但使用IIS搭建后为False,后来发现是应为我请求的GET请求中包含中文,导致请求错误,在使用是尤其注意这点,建议在使用请求时,使用POST方式进行

代码语言:python
代码运行次数:0
复制
def delete_user_inquiry(request,inquiryId):
    # 获取cookie中的usid值,不存在则默认0
    usid = request.COOKIES.get('usid', 0)
    # 查询数据库中是否存在用户
    user = UserMondel.objects.filter(id=usid).first()
    # 如果usid等于0,则代表用户不存在,则需定位到登录页
    if usid == 0:
        return redirect(reverse('login'))
    if request.method == "GET":
        print(inquiryId,usid)
        userid = UserMondel.objects.filter(id=usid).first()
        print(userid)
        inquiry = Inquiry.objects.filter(id=inquiryId)
        print(inquiry)
        a = inquiry.exists()
        if inquiry.exists():
            inquiry.update(is_delete=True)
            return JsonResponse({'data': "OK","message":f"{userid},{inquiry},{a}"})
        else:
            return JsonResponse({'data':"NG","message":f"{userid},{inquiry},{a}"})
    else:
        return JsonResponse({'data': "NB"})

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用户登录
  • 用户注销
  • 用户注册
  • 用户已询价商品
  • 备注:
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档