说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!
接着上一篇博客继续往下写 :Django项目之Web端电商网站的实战开发(一)_cdtaogang's blog-优快云博客_django电商项目源码
目录
一丶用户注册
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") # 注册页
]
- step4 运行项目,在浏览器中输入http://127.0.0.1:8000/user/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, "index.html")
- step9 紧接着在df_goods/urls进行正则路由配置