当前位置: 首页 > news >正文

第11次:用户注册(简要版)

1、定义模板

在templates文件夹下边新建register.html,代码如下:

<html lang="en">
<head><meta charset="UTF-8"><title>注册</title>
</head>
<body><!--{%是模板标签,
其作用是解析视图函数对应的URL模式。
auth_app对应的是此应用的urls.py中的app_name的值,即应用的命名空间
register对应的是urls.py是某个url模式的别名-->
<form action="{% url 'auth_app:register' %}" method="POST">{% csrf_token %}<div style="margin:0 auto;width: 500px"><table><tr style="text-align: left"><td><label>用户名</label></td><td><input type="text" name="username"></td></tr><tr style="text-align: left"><td><label>密码</label></td><td><input type="password" name="password"></td></tr><tr style="text-align: left"><td><label>确认密码</label></td><td><input type="password" name="check_password"></td></tr></table><div style="margin:0 auto;width: 300px"><!--{% 为模板标签,一般用于文本输出或流程控制-->{% if state %}<!-- {{是模板变量,其值由视图函数传递过来--><p style="color: red">{{ state }}</p>{% endif %}</div><button type="submit">注册</button></div>
</form>
</body>
</html>

2、定义对应的视图类

在auth_app/views.py文件中定义处理用户注册请求的视图类RegisterView(),分别处理浏览器发起的GET请求和POST请求。

  1. auth_app/views.py完整代码如下:
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from django.shortcuts import render, redirect
from django.urls import reverse
from django.views import View
from django.contrib.auth import authenticate, login, logout# 注册
class RegisterView(View):"""此视图类用于响应http://127.0.0.1:8000/register的GET与POST请求"""def get(self, request):"""处理GET请求"""state = request.GET.get('state', '')print('GET请求  state=', state)return render(request, 'register.html', {'state': state})def post(self, request):"""处理POST请求"""# 1、接收请求参数,用户名、密码和确认密码username = request.POST.get('username', '')password = request.POST.get('password', '')check_password = request.POST.get('check_password', '')# 2、校验请求参数# 判断两次密码是否一致if password != check_password:state = '两次密码输入不一致,请重新输入!'return render(request, 'register.html', {'state': state})username_exists = User.objects.filter(username=username).exists()# 判断用户名是否已被注册if username_exists:state = '该用户名已被注册,请登录!'else:# 执行注册user = User.objects.create_user(username=username, password=password)# 3、保存注册数据user.save()state = '注册成功,请登录!'# 4、返回注册结果,在第10次课有登录页面时使用# return redirect(reverse('auth_app:login') + '?state={}'.format(state))# 注册时的重定向,第9次课使用return redirect(reverse('auth_app:register') + '?state={}'.format(state))
  1. 处理get请求。当后端接收到用户通过浏览器发起的get请求后,调用RegisterView()里的get()方法处理GET请求,并返回register.html页面。
  2. 注册数据通过前端校验之后,用户单击注册按钮,浏览器会向后端发送POST请求,Django接收注册页面发来的POST请求,调用RegisterView类中的post()方法处理该请求。post()方法对POST请求的处理可以分为4步:接受请求参数,校验请求参数、保存注册数据、返回注册结果。

3、配置路由

根路由urls.py中:

path('', include('auth_app.urls'))

子路由baicai/auth_app/urls.py中:

from django.urls import path
from . import views
app_name ='auth_app'
urlpatterns = [path('register/', views.RegisterView.as_view(), name='register'),
]

python manage.py runserver运行项目

浏览器访问http://127.0.0.1:8000/register,输入用户名,密码以及确认密码,点击注册可进行注册。

刷新navicat里的goods数据库auth_user表,可以看到新创建的用户。

相关文章:

  • Ubuntu打开中文文本乱码
  • 使用AI应用开发平台搭建夸奖机器人,玩转AI【COZE入门案例-第1课】
  • 说下RabbitMQ的整体架构
  • STM32教程:串口USART通讯协议原理及分析(基于STM32F103C8T6最小系统板标准库开发)*详细教程*
  • 爬虫技术-利用Python和Selenium批量下载动态渲染网页中的标准文本文件
  • CentOS配置了镜像源之后依旧下载元数据失败
  • 【MCP Node.js SDK 全栈进阶指南】专家篇(2):MCP多模型支持架构
  • CSS--图片链接垂直居中展示的方法
  • 用html+js+css实现的战略小游戏
  • tinyrenderer笔记(透视矫正)
  • 如何搭建spark yarn模式集群的集群
  • 树上背包学习笔记
  • 【mysql】常用命令
  • vue源代码采用的设计模式分解
  • accept() reject() hide()
  • Select Rows组件研究
  • 使用Java和LangChain4j实现人工智能:从分类到生成式AI
  • stm32之输出比较OC和输入捕获IC
  • SQLite数据类型
  • Class AB OPA corner 仿真,有些corenr相位从0开始
  • 中国电信财务部总经理周响华调任华润集团总会计师
  • 山东莒县农商银行去年收入、利润下降,资本充足率等指标增长
  • 刘诚宇、杨皓宇进球背后,是申花本土球员带着外援踢的无奈
  • 这个接班巴菲特的男人,说不出一个打动人心的故事
  • 马上评|从一个细节看今年五一档电影
  • 长和获准出售巴拿马运河港口以外的港口?外交部:该报道没有依据