首页 > 数据库 >[免费]基于Python的Django在线(生鲜)商城(电子商城)管理系统【论文+源码+SQL脚本】

[免费]基于Python的Django在线(生鲜)商城(电子商城)管理系统【论文+源码+SQL脚本】

时间:2024-12-03 22:32:10浏览次数:6  
标签:name get Python 电子商城 request uname 源码 user context

大家好,我是java1234_小锋老师,看到一个不错的基于Python的Django在线(生鲜)商城(电子商城)管理系统,分享下哈。

项目视频演示

【免费】基于Python的Django在线(生鲜)商城(电子商城)管理系统 Python毕业设计_哔哩哔哩_bilibili

项目介绍

随着电子商务的迅速发展,在线商城作为现代商业的重要组成部分,已经深刻地改变了消费者的购物方式和商业运营模式。本论文提出并实现了一种基于Python的Django框架的在线生鲜商城管理系统。该系统旨在为用户提供便捷的商品浏览、下单、支付等一站式服务,同时为商家提供高效的商品管理、订单处理、用户管理等功能,提升运营效率和用户体验。

首先,论文介绍了Django框架的特点及其在Web开发中的优势,阐述了采用Django框架进行开发的技术选型与架构设计。系统设计中,前端采用HTML、CSS、JavaScript等技术实现用户界面的交互和响应式布局;后端则通过Django的MVC架构实现数据管理、用户认证和业务逻辑处理。数据库部分使用SqlLite进行数据存储,并通过Django ORM进行数据操作。

该系统主要包括用户端和管理端两大模块。用户端提供生鲜商品展示、购物车管理、订单支付、评价系统等功能,确保用户能够方便地浏览、购买商品,并享受个性化推荐和优惠信息;管理端则包含商品管理、订单管理、用户管理、统计分析等功能,帮助商家有效管理库存、跟踪订单和优化运营策略。

通过系统的设计与实现,本文展示了基于Django的生鲜商城管理系统的可行性及其在实际应用中的潜力。系统的高可扩展性、灵活性和安全性,满足了现代电子商务平台对高效、稳定和易维护的要求。最终,通过测试与用户反馈,验证了该系统在功能完整性、性能表现和用户体验方面的优越性。

系统展示

部分代码

from django.shortcuts import render, redirect, HttpResponseRedirect, reverse
from django.core.paginator import Paginator
from django.http import JsonResponse

from hashlib import sha1

from .models import GoodsBrowser
from . import user_decorator
from df_order.models import *


def register(request):

    context = {
        'title': '用户注册',
    }
    return render(request, 'df_user/register.html', context)


def register_handle(request):

    username = request.POST.get('user_name')
    password = request.POST.get('pwd')
    confirm_pwd = request.POST.get('confirm_pwd')
    email = request.POST.get('email')

    # 判断两次密码一致性
    if password != confirm_pwd:
        return redirect('/user/register/')
    # 密码加密
    s1 = sha1()
    s1.update(password.encode('utf8'))
    encrypted_pwd = s1.hexdigest()

    # 创建对象
    UserInfo.objects.create(uname=username, upwd=encrypted_pwd, uemail=email)
    # 注册成功
    context = {
        'title': '用户登陆',
        'username': username,
    }
    return render(request, 'df_user/login.html', context)


def register_exist(request):
    username = request.GET.get('uname')
    count = UserInfo.objects.filter(uname=username).count()
    return JsonResponse({'count': count})


def login(request):
    uname = request.COOKIES.get('uname', '')
    context = {
        'title': '用户登陆',
        'error_name': 0,
        'error_pwd': 0,
        'uname': uname,
    }
    return render(request, 'df_user/login.html', context)


def login_handle(request):  # 没有利用ajax提交表单
    # 接受请求信息
    uname = request.POST.get('username')
    upwd = request.POST.get('pwd')
    jizhu = request.POST.get('jizhu', 0)
    users = UserInfo.objects.filter(uname=uname)
    if len(users) == 1:  # 判断用户密码并跳转
        s1 = sha1()
        s1.update(upwd.encode('utf8'))
        if s1.hexdigest() == users[0].upwd:
            url = request.COOKIES.get('url', '/')
            red = HttpResponseRedirect(url)  # 继承与HttpResponse 在跳转的同时 设置一个cookie值
            # 是否勾选记住用户名,设置cookie
            if jizhu != 0:
                red.set_cookie('uname', uname)
            else:
                red.set_cookie('uname', '', max_age=-1)  # 设置过期cookie时间,立刻过期
            request.session['user_id'] = users[0].id
            request.session['user_name'] = uname
            return red
        else:
            context = {
                'title': '用户名登陆',
                'error_name': 0,
                'error_pwd': 1,
                'uname': uname,
                'upwd': upwd,
            }
            return render(request, 'df_user/login.html', context)
    else:
        context = {
            'title': '用户名登陆',
            'error_name': 1,
            'error_pwd': 0,
            'uname': uname,
            'upwd': upwd,
        }
        return render(request, 'df_user/login.html', context)


def logout(request):  # 用户登出
    request.session.flush()  # 清空当前用户所有session
    return redirect(reverse("df_goods:index"))


@user_decorator.login
def info(request):  # 用户中心
    username = request.session.get('user_name')
    user = UserInfo.objects.filter(uname=username).first()
    browser_goods = GoodsBrowser.objects.filter(user=user).order_by("-browser_time")
    goods_list = []
    if browser_goods:
        goods_list = [browser_good.good for browser_good in browser_goods]  # 从浏览商品记录中取出浏览商品
        explain = '最近浏览'
    else:
        explain = '无最近浏览'

    context = {
        'title': '用户中心',
        'page_name': 1,
        'user_phone': user.uphone,
        'user_address': user.uaddress,
        'user_name': username,
        'goods_list': goods_list,
        'explain': explain,
    }
    return render(request, 'df_user/user_center_info.html', context)


@user_decorator.login
def order(request, index):
    user_id = request.session['user_id']
    orders_list = OrderInfo.objects.filter(user_id=int(user_id)).order_by('-odate')
    paginator = Paginator(orders_list, 2)
    page = paginator.page(int(index))
    context = {
        'paginator': paginator,
        'page': page,
        # 'orders_list':orders_list,
        'title': "用户中心",
        'page_name': 1,
    }
    return render(request, 'df_user/user_center_order.html', context)


@user_decorator.login
def site(request):
    user = UserInfo.objects.get(id=request.session['user_id'])
    if request.method == "POST":
        user.ushou = request.POST.get('ushou')
        user.uaddress = request.POST.get('uaddress')
        user.uyoubian = request.POST.get('uyoubian')
        user.uphone = request.POST.get('uphone')
        user.save()
    context = {
        'page_name': 1,
        'title': '用户中心',
        'user': user,
    }
    return render(request, 'df_user/user_center_site.html', context)
#!/user/bin/env python
# -*- coding: utf-8 -*-
from django.conf.urls import url

from .views import *

app_name = 'df_user'

urlpatterns = [
    url(r'^register/$', register, name="register"),
    url(r'^register_handle/$', register_handle, name="register_handle"),
    url(r'^register_exist/$', register_exist, name="register_exist"),
    url(r'^login/$', login, name="login"),
    url(r'^login_handle/$', login_handle, name="login_handle"),
    url(r'^info/$', info, name="info"),
    url(r'^order/(\d+)$', order, name="order"),
    url(r'^site/$', site, name="site"),
    # url(r'^place_order/$', views.place_order),
    url(r'^logout/$', logout, name="logout"),
]

源码代码

链接:https://pan.baidu.com/s/1qF5-QZP9wvl7cvwZxziySQ
提取码:1234

标签:name,get,Python,电子商城,request,uname,源码,user,context
From: https://blog.csdn.net/caoli201314/article/details/144198823

相关文章

  • 《Python基础》之Pandas库
    目录一、简介二、Pandas的核心数据结构1、Series2、DataFrame三、数据读取与写入1、数据读取 2、数据写入四、数据清洗与处理1、处理缺失值2、处理重复值3、数据转换五、数据分析与可视化1、统计描述2、分组聚合3、数据可视化六、高级技巧1、时间序列分析2......
  • Python基于滑动窗口CNN损伤梁桥数据、故宫城墙图像数据分类可视化|附数据代码
    全文链接:https://tecdat.cn/?p=38442原文出处:拓端数据部落公众号分析师:YufeiGuo在现代土木结构工程领域,结构损伤的准确识别与定位对于保障基础设施的安全性和耐久性具有极为关键的意义。传统的人工检查方法,如目视检查以及借助专业设备进行检测,在很长一段时间内占据着主导地位,......
  • A109 PHP+MYSQL+LW+网上论坛网站 军事BBS系统的设计与实现 源码+文档 全套 教程
    网上军事论坛网站系统1.项目摘要2.研究背景3.项目功能4.界面展示5.源码获取1.项目摘要随着计算机网络的普及,如今越来越多的论坛类网站也是数不胜数,各种类型的论坛交流网站,深受当前网友们的喜欢。网上军事论坛网站的成立,是基于对于想要了解更多军事方面的资讯信息的......
  • flask框架电竞赛事管理系统毕设源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于电竞赛事管理系统的研究,现有研究多集中在电竞产业的宏观发展、个别赛事的组织流程等方面,专门针对一个综合且全面的电竞赛事管理系......
  • flask框架党支部建设管理平台毕设源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于党支部建设管理的研究,现有研究主要以传统的党建工作模式及理论探讨为主。在信息化飞速发展的今天,虽然有部分地区开始探索党建信息......
  • flask框架宠物乐园毕设源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景随着人们生活水平的提高,宠物在人们生活中的地位日益重要,宠物乐园这一新兴产业也随之蓬勃发展。关于宠物乐园相关功能及运营方面的研究......
  • flask框架巴黎奥运会论坛系统的设计与实现毕设源码+论文
    文件加密系统的设计与实现tp835本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于奥运会相关论坛系统的研究,现有研究主要以奥运会的赛事组织、运动员表现等为主,专门针对巴黎奥运会......
  • Python实现12306 抢票小助手(速通)
            在如今这个快节奏的时代,出行需求日益增长,尤其是在节假日或者特殊时期,购买火车票往往成为一件颇具挑战性的事情。为了帮助大家更顺利地抢到心仪的车票,今天我将为大家详细解析一段12306抢票助手的代码,并教大家如何使用它。结果展示(文末附完整代码):目录结果......
  • 高校心理教育辅导|基于springBoot的高校心理教育辅导系统设计与实现(附项目源码+论文+
    私信或留言即免费送开题报告和任务书(可指定任意题目)目录一、摘要二、相关技术三、系统设计四、数据库设计  五、核心代码   六、论文参考  七、源码获取 一、摘要随着Internet技术的发展,心理教育辅导系统应运而生,心理教育辅导系统为用户提供了一个更为便......
  • 常见排序整合(python版)
    1.冒泡排序#bubblesort#时间复杂度为o(n^2)#升序和降序只需要改动其中的一个箭头方向即可defbubble_sort(li):count=1foriinrange(len(li)-2):exchange=Falseforjinrange(len(li)-i-1):ifli[j]>li[j+1]:......