Django项目之Web端电商网站的实战开发(二)

本文详细介绍了Django电商网站用户注册和登录的实现过程,包括用户注册页面展示、数据处理、表单验证、注册逻辑实现、邮箱验证、登录页面展示和数据验证等步骤。同时,文章讨论了使用Django认证系统、静态资源处理、邮箱发送、session存储以及Celery异步发送邮件等技术细节。
摘要由CSDN通过智能技术生成

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!

接着上一篇博客继续往下写 :Django项目之Web端电商网站的实战开发(一)_cdtaogang's blog-CSDN博客_django电商项目源码

非VIP用户请点击这里进行查阅 

目录

一丶用户注册

二丶用户登录


一丶用户注册

1.显示用户注册页面

  • step1 在static目录下将register.html文件拷贝到templates模板目录下

  • step2 在df_user模块下的views视图中定义一个register函数,定义这个函数的路由正则匹配为/user/register,显示用户注册页面
# /user/register
def register(request):
    """显示注册页面"""
    return render(request, "register.html")
  • step3 在df_user模块下的urls地址中配置注册页面正则规则,以及调用视图函数中的register函数
urlpatterns = [
    url(r"^register$", views.register, name="register")  # 注册页
]

  • step5 出现上面这种情况是,页面所需要的图片和css以及js文件路径错误404,因为此时的register.html文件放在了templates模板目录下,所以需要在register.html中动态获取路径,需导入静态资源,然后修改每个链接,因为之前在settings配置文件中配置了静态文件URL为/static/所以这里只需要写之后的路径即可
{% load staticfiles %}
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
	<title>天天生鲜-注册</title>
	<link rel="stylesheet" type="text/css" href="{% static 'css/reset.css' %}">
	<link rel="stylesheet" type="text/css" href="{% static 'css/main.css' %}">
  • step6 刷新页面,成功显示出页面内容

2.定义注册页面表单数据视图函数

  • step1 首先注册页面数据是以POST请求方式向服务器发送,那么在register.html文件中找到form表单标签,编写用户点击注册按钮后向服务器请求的url地址
<form method="post" action="/user/register_handle">
  • step2 在django中发送POST请求表单数据,防止跨站攻击需在form标签下加上{% csrf_token %}
<form method="post" action="/user/register_handle">
    {% csrf_token %}
  • step3 在df_user/views视图函数中定义register_handle方法,用于处理注册页面数据
# /user/register/handle
def register_handle(request):
    """处理用户注册数据"""
    pass
  • step4 在在df_user/urls路由地址中定义register_handle视图函数正则匹配规则
url(r"^register_handle$", views.register_handle, name="register_handle")  # 注册数据处理

3.视图函数register_handle代码逻辑实现

  • step1 接收注册表单数据
username = request.POST.get("user_name")
password = request.POST.get("pwd")
email = request.POST.get("email")
allow = request.POST.get("allow")
  • step2 判断用户传递过来的数据是否存在,不存在返回错误信息提示
if not all([username, password, email]):
    return render(request, "register.html", {"error_msg":"数据不完整"})
  • step3 判断用户填写的邮箱是否为正确邮箱
if not re.match(r"^[a-z0-9][\w.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$", email):
    return render(request, "register.html", {"error_msg":"邮箱格式不正确"})
  • step4 判断用户注册时是否勾选同意,同意后该字段POST请求参数为on
if allow != "on":
    return render(request, "register.html", {"error_msg":"请勾选同意"})
  • step5 进行用户注册,将数据保存在数据库用户名中, 因为在执行迁移文件时,在settings中配置了django认证系统指定的模型类为df_user.User 所以可以不使用传统方式向类中添加属性再保存到数据库,而是直接使用django认证系统封装好的create_user函数将数据直接保存到数据库
user = User.objects.create_user(username, email, password)
  • step6 注册成功后,使用反向解析跳转到首页 reverse(根基urls中的主页的namespace:goods模块中的urls主页的name)
return redirect(reverse("goods:index"))
  • step7 为了显示主页,将static目录下的index.html文件拷贝到templates目录下,并加载静态资源文件{% load staticfiles %}修改index.html中的静态文件路径,这个页面的地址比较多,体力活

  • step8 在df_goods/views中定义index视图函数
# http://127.0.0.1:8000
def index(request):
    """显示首页"""
    return render(request, "
  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cdtaogang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值