电商购物网站 - 登录和浏览

news/2024/4/27 20:05:41/文章来源:https://blog.csdn.net/weixin_34417183/article/details/89039219

1、添加登录视图

添加视图

前面我们已经实现了注册功能,用户可以成功注册,接着我们就开始让用户登录了,此节我们就实现用户的登录功能,并且登录成功后跳转商品页面查看商品。

首先,我们还是在views目录下添加登录视图页面 —— login.html,效果图如下:

2、访问登陆视图

访问视图

有了登录页面,那么注册页面(register)的登录按钮添加指向登陆页面的链接,相应的登陆页的注册按钮也是如此。

这里我们还是添加一个相对应的文件用来处理login页面的请求,routes目录下新建名为login.js的文件,先来增加一个处理get请求的方法,代码参考如下:

module.exports = function (app) {app.get('/login', function (req, res) {res.render('login');})
};

register文件一样添加到index.js中,如下:

require('./login')(app);

register视图页的register()函数的回调中,当注册成功时我们就可以跳转到登陆页面了,如下:

location.href = 'login';

试试登陆、注册按钮能否成功跳转!

3、添加登陆功能

实现登陆

我们为登陆按钮增加单击事件和对应函数login(),参考如下:

function login() {var data = $("form").serialize();$ajax({url: '/login',type: 'POST',data: data,success: function (data, status) {if (status == 'success') {location.href = 'home';}},error: function (data, status) {if (status == 'error') {location.href = 'login';}}})
}

在相应的login.js文件中,我们还得添加相对应的post请求处理方法。

4、登陆处理

关于login视图页的post请求处理,我们需要判断用户所输入用户名是否存在,密码是否正确,并使用变量保存相应提示信息,当用户名和密码全部正确时,则返回成功并保存用户的个人信息,用作来判断用户的登陆状态,具体可参考register视图页的post请求。

app.post('/login', function (req, res) {var User = global.dbHelper.getModel('user'),uname = req.body.uname;User.findOne({name: uname}, function (error, doc) {if (用户不存在) {req.session.error = '用户名不存在!';res.sendStatus(404);} else if (用户存在, 密码错误) {req.session.error = "密码错误!";res.sendStatus(404);} else {req.session.user = doc;res.sendStatus(200);}})
});

还记得我们登陆的本地变量message嘛,用来保存html标签并包含相应提示信息,这里在登陆页面我们也可以使用,用法:<%- message %>,指定到相应位置即可。

5、添加商品页视图

商品页视图

用户登录成功之后则跳转至home视图页面(商品主页),就可以进行对商品的浏览和选择了。

还是views目录,添加home商品视图页,如下简单效果图:

用户成功登录之后跳转至home页,这里我们还是做分开处理,routes目录下新建home.js文件用来处理来自home也的get请求。

这里我们假设如果用户未登录将不能查看商品主页,所以,在请求处理中我们还需要判断用户的登陆状态,这个可以使用我们在登录处理时所保存的用户个人信息。

关于商品页的视图展示我们只需要有其名称、价格、图片,这里使用ejs模板循环展示,可参考如下方式:

注:Commodity:商品集合所有数据,内置图片路径为“/example/img”

<ul class="spys"><%for(var i in Commoditys){if(!Commoditys[i].name) continue;%><li class="spys li"><div><img src="img/<%=Commoditys[i].imgSrc%>" width="80" height="100"></div><div><a><%=Commoditys[i].name%></a><strong style="color: red;">¥<%=Commoditys[i].price%></strong></div><div><a class="btn btn-success" style="width: 120px;" href="">加入购物车</a></div></li><%}%>
</ul>

6、商品页请求处理

请求处理

homeget请求处理中,我们需要首先判断用户的登陆状态,只有用户登录了方可跳转到商品页,如果为登陆呢则跳转到登录页,而且在进入商品页的时候并传入Commodity集合的所有数据数据在页面展示。

首先呢,在models.js文件中定义Commodity集合的Schema属性,共包括商品名称、商品价格、商品图片,这里简单定义如下:

commodity: {name: String,price: Number,imgSrc: String
}

routes目录下添加home.js文件(index.js文件中引用)。

具体处理方式可参考如下代码:

module.exports = function (app) {app.get('/home', function (req, res) {if (req.session.user) {var Commodity = global.dbHelper.getModel('commodity');Commodity.find({}, function (error, docs) {//将Commoditys变量传入home模板res.render('home', {Commoditys: docs});})} else {req.session.error = "请先登录";res.redirect('/login');}})
}

7、商品添加视图页

添加商品

添加商品,views目录下添加addcommodity视图页面用来对商品的添加,这里简单样式参考如下:

相对应的addcommodity函数参考代码如下:

//imgSrc表示图片路径),这里内置了5张图片,格式为:xmsz-X.jpg(X为1-5数字)。
var data = $("form").serialize() + "&imgSrc=" + "xmsz-" + Math.floor(Math.random() * 5 + 1) + ".jpg";
$ajax({url: './addcommodity',type: 'POST',data: data,success: function (data, status) {if (status == 'success') {alert("添加成功!");}},error: function (data, err) {alert("添加失败!");}
})

8、商品添加请求处理

商品添加处理

这里我们就直接在home.js文件中添加保存商品的处理方法,如下:

app.get('/addcommodity', function (req, res) {res.render('addcommodity');
});
app.post('./addcommodity', function (req, res) {var Commodity = global.dbHelper.getModel('commodity');Commodity.create({name: req.body.name,price: req.body.price,imgSrc: req.body.imgSrc}, function (error, doc) {if (doc) {res.sendStatus(200);} else {res.sendStatus(404);}})
})

到这里关于商品页的展示和添加就完成了,在下一节里我们将实现商品页商品加入购物车并结算的功能,继续加油吧!

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《SEO的艺术(原书第2版)》——导读

前言 在你面前的这本书是为各层次的SEO从业人员所设计的、完整而透彻的搜索引擎优化教程。本书第2版对第1版进行了完全更新&#xff0c;考虑了搜索引擎行业的变化和社会化媒体日益提高的影响力。尽管如此&#xff0c;和第1版一样&#xff0c;你仍然可以把它看做SEO 101、SEO 10…

SharePoint隐藏快速启动栏_左侧导航_所有网站内容_回收站

隐藏快速启动栏 1. 使用内容编辑Web部件 编辑需要隐藏快速启动栏的页面&#xff0c;插入一个内容编辑控件(放任何地方都行)&#xff0c;编辑HTML源&#xff0c;插入下面的代码&#xff1a; 保存页面&#xff0c;快速启动栏就隐藏了。接着你可以隐藏自己添加的内容编辑web部件。…

Web攻防之二实施渗透测试(黑客如何拿网站权限)

通过上次的内容&#xff0c;我们知道可以通过注入得到需要的数据&#xff0c;比如后台管理员的账号、密码等&#xff0c;但是得到了账号密码后&#xff0c;我们要如何行动呢&#xff1f; 首先要制定一个渗透流程&#xff1a; 1、探测信息 2、利用漏洞得到管理账号密码 3、找到后…

使用Python-Flask框架开发Web网站系列课程(三)登录功能

版权声明&#xff1a;如需转载&#xff0c;请注明转载地址。 https://blog.csdn.net/oJohnny123/article/details/81975386 前言 使用IDE&#xff1a;PyCharm 操作系统&#xff1a;Mac Python的版本&#xff1a;3.6 我的邮箱&#xff1a;51263921qq.com 交流群&#xff1a;3724…

提高编程能力刷题网站

提高编程能力刷题网站 一、leetcode 网址&#xff1a;https://leetcode.com/ 账号信息&#xff1a; 账号BeiBicoder 密码 通常用的密码 二、coderwars https://www.codewars.com/ 三、virtual Judge https://vjudge.net/ 四、geeksforgeeks https://www.geeksforgeeks.org/ 五 …

生成元(Digit Generator ,ACM/ICPC Seoul 2005 ,UVa 1583)

生成元&#xff1a;如果 x 加上 x 各个数字之和得到y&#xff0c;则说x是y的生成元。 n&#xff08;1<n<100000&#xff09;,求最小生成元&#xff0c;无解输出0. 例如&#xff1a;n216 , 解是&#xff1a;198 198198216 解题思路&#xff1a;打表 循环将从1到10005&…

发一个自动刷网站PV流量的小工具

刷IP需要很多资源或财力&#xff0c;而刷PV却非常easy&#xff0c;一直要有一个能上网的机器&#xff0c;就能刷出N个PV值来。因为需要&#xff0c;写了个刷PV的小工具&#xff0c;可以设置要刷的页面&#xff0c;设置时间间隔。 下载

史前社交网站MySpace丢失12年间所有音频数据!因服务器迁移失败

3月19日&#xff0c;有外媒报道史前社交巨人MySpace在服务器迁移过程中由于服务器错误&#xff0c;导致MySpace上2003年到2015年间所有音视频数据全部丢失。 MySpace于2003年推出&#xff0c;在短短几年内成为大型音乐平台&#xff0c;乐队可以在上面分享自己的歌曲&#xff0c…

程序员删库跑路案例之 —— 这家网站首页变图片

百度智能云 云生态狂欢季 热门云产品1折起>>> 3月28日&#xff0c;网络上突然流传一则传言&#xff0c;称安徽汽车网程序员删库跑路&#xff0c;只留下3张图片做官网&#xff0c;令人咋舌。 目前访问其官网 http://www.ahauto.com/ &#xff0c;页面还是其网站的样子…

网站性能优化(website performance optimization)

提高代码运行速度&#xff0c;或许我们从来没有优化这些页面来提高速度 想要开发优秀的网站&#xff0c;你必须了解你的用户&#xff0c;知道他们想要达到什么目的&#xff0c;同时还要明白浏览器的工作原理&#xff0c;从而能够打造快速良好的体验&#xff0c;我最近在PageSpe…

Windows服务器(阿里云)搭建IIS网站+配置入站规则+端口权限

一、IIS搭建&#xff1a;Windows Server 2019 搭建IIS环境 教程 - 付杰博客 二、入站端口配置&#xff08;可以跳过&#xff0c;阿里后台配置就行&#xff0c;看第三步&#xff09; 三、阿里服务器的入站配置 3.1、登陆阿里后台 3.2、配置规则

pc端的企业网站(IT修真院test9)详解一个响应式完成的pc端项目

一&#xff1a;引入bootstrap框架 昨天一直被bootstrap栅格系统折磨。 why? 我本来想一边码字&#xff0c;一边学习栅格布局的。but不成功。这时我头脑已经昏了。 下午&#xff0c;我查看了bootstrap的官网&#xff0c;带着我的问题&#xff1a;究竟怎么使用bootstrap的框架呢…

友盟统计网站需要收费吗_职业教育网站需要做推广吗?网站推广方法有哪些?...

职业教育网站唯有做好推广才能在众多网站中脱颖而出&#xff0c;既能带来流量还能树立品牌形象&#xff0c;有利于企业的发展&#xff0c;职业教育网站做网站推广方法还是挺多的&#xff0c;如SEO、SEM、软文推广、微博推广等等。随着移动互联网的迅速发展和产业结构升级的持续…

第三百八十八节,Django+Xadmin打造上线标准的在线教育平台—网站列表分页

第三百八十八节&#xff0c;DjangoXadmin打造上线标准的在线教育平台—网站列表分页 分页可以用一个第三方分页模块django-pure-pagination 下载地址&#xff1a;https://github.com/jamespacileo/django-pure-pagination#settings 下载后安装此模块即可 使用pure-pagination分…

jq审核通过重定向跳转_关于网站进行301跳转

网站301跳转就是把页面永久性移走&#xff0c;也叫301重定向&#xff0c;301转向。指的是当用户点击一个网址时&#xff0c;通过技术手段&#xff0c;跳转到指定的一个网站。301跳转多用于旧网址在废弃前转向新网址以保证用户的访问&#xff0c;在诸多服务器中&#xff0c;均支…

moss2007自定义网站栏不显示

用moss2007建立了一个blog站点&#xff0c; 默认文章显示为: 并在“文章”列表中加入了一个自定义的栏"摘要”&#xff0c; 在首页中加入对"摘要"栏的显示设置: 保存后,在首页中就是显示不出来: 在点击修改时可以看到"摘要"栏的信息: 找了一下午,也没…

网站静态化(转)

找了一些关于网站静态化的文章&#xff0c;分享一下。网友方案一&#xff1a;做程序也做了将近4年时间了&#xff0c;从来没有发过什么技术性的文章&#xff0c;今天发一个只在大家一起共同学习进步&#xff0c;如有错误地方请指正。 最近自己做了一个做网络广告的网站叫全方位…

杜绝Cookie传送提高网站访问速度

最近在做网站的优化&#xff0c;其中一项包括&#xff1a;对静态文件&#xff08;如图片&#xff0c;JS脚本文件及CSS文件&#xff09;启用一个新的独立域名&#xff0c;以杜绝不必要的Cookie传送&#xff0c;提高请求速度并减少带宽。   我们知道&#xff0c;当向HTTP服务器…

CentOS 上搭建 WordPress 网站

简介&#xff1a; WordPress是使用PHP语言开发的博客平台&#xff0c;在支持PHP和MySQL数据库的服务器上&#xff0c;您可以用WordPress架设自己的网站&#xff0c;也可以用作内容管理系统&#xff08;CMS&#xff09;。本文主要为大家介绍如何在CentOS系统的ECS实例上搭建Word…

长尾词推广系统推荐乐云seo_万词霸屏网络推广效果怎么样

信息传播一直伴随在我们的生活当中&#xff0c;而且信息传播在一些领域是非常重要的&#xff0c;尤其是在企业要提高知名度和一些新的产品要推广方面尤其重要。自从有了互联网之后信息传播速度也加快了、从此也就有了外推团队&#xff0c;企业中的外推团队最开始就是发发新闻稿…