Web实战丨基于django+html+css+js的电子商务网站

news2024/11/15 17:47:57

文章目录

  • 写在前面
  • 实验目标
  • 需求分析
  • 实验内容
    • 安装依赖库
    • 1.登陆界面
    • 2.注册界面
    • 3.电子商城界面
    • 4.其他界面
  • 运行结果
  • 写在后面

写在前面

本期内容:基于Django+HTML+CSS+JS的电子商务网站

实验环境:

  • vscode或pycharm
  • python(3.11.4)
  • django

代码下载地址:https://download.csdn.net/download/m0_68111267/88725954

实验目标

使用Django+HTML+CSS+JS开发一个含登陆界面的电子商务网站。本项目共分为六大模块:

  1. 用户信息界面
  2. 商品信息界面
  3. 购物车界面
  4. 送货地址界面
  5. 订单界面
  6. 支付界面

需求分析

1. 用户信息界面

用户信息模块包括:用户注册,用户登录,显示用户信息和修改用户密码。

  • 注册信息要输入用户名、密码和邮箱。注册信息要求用户名必须唯一,如果用户名在数据库中已经存在,就会显示相应的错误提示信息。
  • 在用户登录的时候,如果用户名和密码输入有误,就必须提示相应的错误信息。
  • 用户登录程序后,应该允许用户查看自己的用户信息和收货信息。
  • 允许修改密码,修改用户密码的时候,必须提供旧密码、新密码和新密码的确认信息。如果出现下列情况时应该给出相应的错误提示信息。
    ① 旧密码不正确。
    ② 新密码与旧密码相同。
    ③ 新密码与新密码的确认信息不一致。

2. 商品信息界面

商品信息模块包括:商品信息的维护,商品概要信息的分页显示,根据商品名称的模糊查询,对某一条商品显示其详细信息。

  • 商品信息的维护:包括增加、修改和删除操作,是利用 Django的后台完成的。
  • 商品概要信息的分页显示:包括显示商品信息的 id、名称、价钱以及查看详情和放入购物车的操作链接。
  • 根据商品名称的模糊查询:通过商品名称的模糊查询实现,查询结果界面同概要信息,也需要实现分页功能。
  • 对某一条商品显示其详细信息:除了显示名称、价钱,还要显示商品的描述、图片以及放入购物车的操作。

3. 购物车界面

购物车模块包括:购物车中所有商品的显示,添加商品进入购物车,修改购物车中某种商品的数量,删除购物车中某个商品,删除购物车中所有商品。

  • 购物车中所有商品的显示:通过列表实现,包括显示商品 id、商品名称、单价、商品个数以及移除的操作链接。单击“商品 id”可以查看对应的商品详细信息。
  • 添加商品进入购物车:可以在购物车列表中进行操作,也可以在商品的详细信息中进行操作。
  • 修改购物车中某种商品的数量和删除购物车中某个商品的操作在购物车列表中进行。
  • 可以在查看所有订单页面中删除购物车中所有商品。

4. 送货地址界面

送货地址模块包括:送货地址的显示,送货地址的添加,送货地址的修改,送货地址的删除。

  • 送货地址的显示:可以在生成订单选择送货地址的时候,也可以在查看用户信息的时候。
  • 送货地址的添加:可以添加当前用户账号下的一个或多个送货地址。
  • 送货地址的修改和送货地址的删除可以通过送货地址的显示页面进入。

5. 订单界面

订单模块包括:显示总的订单,显示所有订单,删除单个订单,删除总订单。

  • 显示总的订单:在订单生成完毕后显示,包括生成时间、配货地址和总价钱以及订单中每个商品的订单 id、商品名称、商品价格、个数。
  • 显示所有订单:包括该用户下的所有订单,每个订单的显示内容同单个订单。如果这个订单没有支付,系统就会提供支付的操作链接。
  • 删除单个订单:可以在显示单个订单内容页面中进行,也可以在显示所有订单内容页面中进行。
  • 删除总订单:在显示单个订单或显示所有订单的页面中进行。
  • 在单个订单和所有订单中单击“商品id”可以查看对应的商品详细信息。

6. 支付界面

订单确认后,可以利用各种支付平台(如支付宝、微信、网银卡等)进行支付操作。

实验内容

安装依赖库

在正式开始之前,我们需要先安装本次实战项目所依赖的库:

  • django:一个高级的Python Web框架。

安装命令:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django

1.登陆界面

{%load static%}
<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <meta name="description" content="">
    <meta name="author" content="">

    <title>电子商务系统丨登录</title>

    <!-- Bootstrap core CSS -->
    <link href="/static/css/login.css" rel="stylesheet"> 
    <!-- Custom styles for this template -->
    <link href="/static/css/bootstrap.min.css" rel="stylesheet">
	<link href="/static/css/my.css" rel="stylesheet">
	<script type="text/javascript" src="/static/js/sh256.js"></script>
	<script type="text/javascript" >
	function SHA256Password()
	{
	document.forms["myForm"]["password"].value = SHA256(document.forms["myForm"]["password"].value);
	return true;
	}
</script>

  </head>

  <body>

    <div class="container">
      <form class="form-signin" name="myForm" method="post" action="/login_action/" enctype="multipart/form-data" onsubmit="return SHA256Password()">
	  {% csrf_token %}
        <h2 class="form-signin-heading">电子商务系统-登录</h2>
        {{uf.as_p}}
          <p style="color:red">{{error}}</p> <br>
        <button class="btn btn-lg btn-primary btn-block" type="submit">登录</button><br>
		<a href="\regist\">注册</a>
      </form>

    </div> 

  </body>

</html>

2.注册界面

{%load static%}
<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <meta name="description" content="">
    <meta name="author" content="">

    <title>电子商务系统丨注册</title>

    <!-- Bootstrap core CSS -->
    <link href="{%static 'css/login.css'%}" rel="stylesheet"-->
    <!-- Custom styles for this template -->
    <link href="{%static 'css/bootstrap.min.css'%}" rel="stylesheet"-->
	<link href="{%static 'css/my.css'%}" rel="stylesheet">
	<script type="text/javascript" src="/static/js/sh256.js"></script>
	<script type="text/javascript" src="/static/js/checkLength.js"></script>
	<script type="text/javascript" >
	function SHA256Password(){
		password = document.forms["myForm"]["password"].value;
		if (checkLength(password,5)==1){
			document.forms["myForm"]["password"].value = SHA256(password);
		}
		return true;
	}
	</script>

  </head>

  <body>

    <div class="container">
      <form class="form-signin" name="myForm" method="post" enctype="multipart/form-data" onsubmit="return SHA256Password()">
        <h2 class="form-signin-heading">电子商务系统-注册</h2>
		{% csrf_token %}
        {{uf.as_p}}
          <p style="color:red">{{error}}</p> <br>
        <input class="btn btn-lg btn-primary btn-block" type="submit" value="注册"><br>
		<a href="/login/">登录</a>
      </form>

    </div> 

  </body>

</html>

3.电子商城界面

{%load static%}
<!DOCTYPE html>
<html lang="zh-CN">
  <head>
      <meta charset="utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
      <meta name="description" content="">
      <meta name="author" content="">

      <title>电子商务系统</title>

      <!-- Bootstrap core CSS -->
    <link href="{%static 'css/login.css'%}" rel="stylesheet"-->
    <!-- Custom styles for this template -->
    <link href="{%static 'css/bootstrap.min.css'%}" rel="stylesheet"-->
  </head>

  <body role="document">
<!-- 导航栏 -->
    <nav class="navbar navbar-inverse navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <a class="navbar-brand" href="/goods_view/">电子商务系统</a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="/goods_view/">商品列表</a></li>
			<li class="active"><a href="/view_all_order/">查看所有订单</a></li>
  {% block content %}


  {% endblock %}
    <div class="container theme-showcase" role="main">

        <div class="page-header">
        </div>

    </div> <!-- /container -->

  <script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
  <script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>

  </body>

</html>

4.其他界面

请下载后查看哦~

运行结果

1. 登陆界面

1

2. 注册界面

2

3. 电子商城界面

3

4. 购物车界面

4

5. 地址界面

5

写在后面

我是一只有趣的兔子,感谢你的喜欢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1380755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【分布式技术】监控平台zabbix介绍与部署

目录 一、为什么要做监控&#xff1f; 二、zabbix是什么&#xff1f; 三、zabbix有哪些组件&#xff1f; ​编辑Zabbix 6.0 功能组件&#xff1a; ●Zabbix Server ●数据库 ●Web 界面 ●Zabbix Agent ●Zabbix Proxy ●Java Gateway 四、zabbix的工作原理&#xf…

GNSS差分码偏差(DCB)原理学习与数据下载地址

一、DCB原理 GNSS差分码偏差&#xff08;DCB&#xff0c;Differential Code Bias&#xff09;是由不同类型的GNSS信号在卫星和接收机不同通道产生的时间延迟&#xff08;硬件延迟/码偏差&#xff09;差异&#xff0c;按照频率相同或者不同又可以细分为频内偏差&#xff08;例如…

PADS9.5 : 元件库绘制

元件库绘制 1、打开PADS LOGIC 软件 2、先开始元件的电参数 这理面我们只需要先关注&#xff1a; 门 &#xff0c;就是当前画的元件有几个部分 示例&#xff1a;两个门&#xff1a;A、B 3、再开始编辑图形 选择创建2D线&#xff0c;绘制PARTA 外框 添加端点&#xff0c;就是接…

生态茶园建设方案——福建蜂窝物联

一、项目背景 为了进一步提高茶产业集约化、产业化发展水平&#xff0c;充分运用物联网、互联网等高新技术为产业赋能&#xff0c;加速推动安溪茶产业转型升级&#xff0c;县政府决定在安溪县推进“安溪智慧生态茶园项目”&#xff0c;并以茶叶重镇感德镇实施“安溪智慧生态茶园…

CRM-如何做好客户管理

客户是企业最重要的资源&#xff0c;也是客户360视图管理的主数据&#xff0c;企业的运转都是围绕客户来开展的&#xff0c;如何做好客户数据的管理是一门学问&#xff0c;也需要企业动态的调整战略。 客户分为企业客户&#xff08;Account&#xff09;与个人客户&#xff08;…

图解智慧:数据可视化如何助你高效洞悉信息?

在信息爆炸的时代&#xff0c;数据扮演着越来越重要的角色&#xff0c;而数据可视化则成为解读和理解海量数据的得力工具。那么&#xff0c;数据可视化是如何帮助我们高效了解数据的呢&#xff1f;下面我就以可视化从业者的角度来简单聊聊这个话题。 无需深奥的专业知识&#x…

环信服务端下载消息文件---菜鸟教程

前言 在服务端&#xff0c;下载消息文件是一个重要的功能。它允许您从服务器端获取并保存聊天消息、文件等数据&#xff0c;以便在本地进行进一步的处理和分析。本指南将指导您完成环信服务端下载消息文件的步骤。 环信服务端下载消息文件是指在环信服务端上&#xff0c;通过调…

实用编程调试技巧

目录 一、调试的基本步骤 二、Debug和Release的介绍 三、Windows环境调试介绍 1.调试环境的准备 2.学会快捷键 最常用的几个快捷键&#xff1a; 断点应用举例&#xff1a; 3.调试的时候查看程序当前信息 &#xff08;1&#xff09…

橘子学Spring01之spring的那些工厂和门面使用

一、Spring的工厂体系 我们先来说一下spring的工厂体系(也称之为容器)&#xff0c;得益于大佬们对于单一职责模式的坚决贯彻&#xff0c;在十几年以来spring的发展路上&#xff0c;扩展出来大量的工厂类&#xff0c;每一个工厂类都承担着自己的功能(其实就是有对应的方法实现)…

redis高级篇之单线程和多线程

目录 1、redis的发展史 2、redis为什么选择单线程&#xff1f; 3、主线程和Io线程是怎么协作完成请求处理的&#xff1f; 4、IO多路复用 5、开启redis多线程 1、redis的发展史 Redis4.0之前是用的单线程&#xff0c;4.0以后逐渐支持多线程 Redis4.0之前一直采用单线程的主…

智慧农业大棚建设方案——福建蜂窝物联

一、项目背景 温室大棚在不适宜植物生长的季节&#xff0c;能提供生育期和增加产量&#xff0c;多用于低温季节喜温蔬菜、花卉、林木等植物栽培或育苗等。因此对种植作物生长环境的要求要精确的多。 大多数农户加温、浇水、通风等&#xff0c;全凭感觉。人感觉冷了就加温&#…

Netfilter 是如何工作的(六):连接跟踪信息的入口创建(in)和出口确认(confirm)

Articles (gitee.io) IPtables-朱双印博客 (zsythink.net) 在 Netfilter 是如何工作的(五) 中连接跟踪信息使用的创建-确认机制的 Netfilter在报文进入系统的入口处&#xff0c;将连接跟踪信息记录在报文上&#xff0c;在出口进行confirm.确认后的连接信息 本文以一个本机上送…

【LeetCode每日一题】2182. 构造限制重复的字符串

2024-1-13 文章目录 [2182. 构造限制重复的字符串](https://leetcode.cn/problems/construct-string-with-repeat-limit/)思路&#xff1a; 2182. 构造限制重复的字符串 思路&#xff1a; 按照字符出现次数从高到低的顺序进行重复&#xff0c;通过维护一个指针 j 来寻找下一个…

如何在你的网站接入QQ登录?

文章目录 准备阶段申请QQ登录的权限创建应用最后上传qqlogin.php代码 准备阶段 国内服务器和备案域名需要你有张独一无二本人的身份证你正面手持身份证的图片一张100px*100px的网站图标 申请QQ登录的权限 首先访问qq互联&#xff0c;点击我直接访问 登陆完成后我们点击面的…

Java判断字符串当中是否有中文符号(不是中文名称,是符号)

public static void main(String[] args) throws ParseException, IOException, URISyntaxException {// 测试示例String testString1 "Hello,test&#xff01;";String testString2 "This is a test.";boolean result1 containsChineseSymbols(testStr…

又涨了:net的域名铁定涨价

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 又要涨价了&#xff0c;又要涨价了&#xff0c;又要涨价了!继.com域名涨价后&#xff0c;.net的域名也逐步涨价。最近一年来域名疯狂涨价&#xff0c;几个月内已经几乎翻番。 阿里云2月1日起上调.net英文域名价格…

专业课148,总分410+电子科技大学858信号与系统考研经验电子信息与通信

今年专业课148分&#xff0c;总分410顺利被电子科技大学录取&#xff0c;回望这一年复习还有很多不足&#xff0c;总结一下自己的复习经历&#xff0c;希望对大家复习有所帮助。 数学&#xff1a;&#xff08;多动手&#xff0c;多计算&#xff0c;多总结&#xff0c;打好基础…

YOLOv8改进:小目标涨点系列篇 | UNet v2 多层次特征融合模块结合DualConv、GSConv

🚀🚀🚀本文改进:多层次特征融合(SDI)结合DualConv、GSConv模块等实现二次创新 🚀🚀🚀SDI 亲测在多个数据集能够实现涨点,同样适用于小目标检测 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研…

Android 13 辅助屏导航栏不显示问题

问题 在Android 13 上开启辅助屏幕。但是发现辅助屏systemui 导航按 icon没有显示&#xff0c;但是点击对应的区域有作用 分析 可以用 anroid device monitor 工具分析视图 解决 public NavigationBarView(Context context, AttributeSet attrs) {super(context, attrs);…

微信订阅号 服务号区别

服务号和订阅号有什么区别&#xff1f;服务号转为订阅号有哪些作用&#xff1f;很多小伙伴想把服务号改为订阅号&#xff0c;但是不知道改了之后具体有什么作用&#xff0c;今天跟大家具体讲解一下。首先我们知道服务号一个月只能发四次文章&#xff0c;但是订阅号每天都可以发…