注册账户

55 阅读3分钟

11.1 配置路由

(1)修改 base.html 中“免费注册”的超链接

<div class="register"><a href="/user/register/">免费注册</a></div>

(2)配置路由

  • 根路由
urlpatterns = \[
path('admin/', admin.site.urls), 
path("", include("goods.urls")), 
# 引入 goods 应用的映射路由
urls.py path("user/", include("userapp.urls"))
# 引入 userapp 应用的路由 urls.py ]
  • userapp 应用的路由(要先创建userapp应用的 urls.py 文件)

from django.urls import path from userapp import views ​ urlpatterns = [ path('register/', views.RegisterView.as_view()), path('checkUname/', views.CheckUnameView.as_view()), ] ​

11.2 创建视图(view.py)

from django.http import HttpResponse, JsonResponse 
from django.shortcuts import render 
from django.views import View ​
from userapp.models import UserInfo ​ ​ 
# Create your views here. class RegisterView(View):
def get(self, request): return render(request, "register.html") ​
def post(self, request): # 获取请求参数 uname = request.POST.get('uname') pwd = request.POST.get('pwd') # 插入数据库 user = UserInfo.objects.create(uname=uname, pwd=pwd) ​
# 判断是否注册成功 if user: return HttpResponse('True') # 注册成功 return HttpResponse('False') # 注册失败 ​class CheckUnameView(View): def get(self, request): # 获取请求参数 uname = request.GET.get('uname', '') # 根据用户名去数据库中查询 user\_list = UserInfo.objects.filter(uname=uname) ​
flag = False # 判断用户名是否存在 if user\_list: flag = True # 如果存在就返回 True ​ return JsonResponse({'flag': flag}) ​

11.3 创建页面 register.html

  • 创建 userapp/templates/register.html
{% extends 'base.html' %} {% block title %} <title>用户注册</title> {% endblock %} 
{% block headerjs %} 
<script type="text/javascript" src="/static/md5-min.js"></script>
{% endblock %} 
{% block main %} 
<div class="login-body"> 
<div class="login-card">
<div class="login-top"> <h3>新用户注册</h3> <h5>尊敬的用户,欢迎您回来!</h5> </div> <div class="login-bottom"> 
<form method="post" action="/user/register/" onsubmit="return register()"> 
<div class="login-input-box"> 
{% csrf\_token %}
<input type="text" id="uname" name="uname" value="" class="login-admin active" placeholder="邮箱注册"> 
<span style="color:red;" id="aSpan">
</span> <input type="password" id="pwd" name="pwd" value="" class="login-password" style="border: 1px solid red">
<span style="color:red;" id="pSpan"></span>
<button class="login-btn" style="color: white;text-decoration: none;cursor: pointer">注册</button> </div> </form> 
<div class="login-img"> 
<img src="/static/login_05.png" alt="转存失败,建议直接上传图片文件"> </div> </div> </div> </div> 
{% endblock %} 
{% block footer %}
<script> function isEmail(str)
{ var reg = /^\[a-zA-Z0-9\_-]{6,}@\[a-zA-Z0-9\_-]+(.\[a-zA-Z0-9\_-]+)+$/; return reg.test(str); } 
{#用户名唯一性校验#} function checkUname(username)
{ var flag = false; $.ajax({ url:'/user/checkUname/', type:'GET', async:false, data:{"uname":username}, success:function (result) 
{ var flag2 = result.flag; 
if( flag2 ){ flag = true; $('#aSpan').html('用户名已存在!'); } } }); return flag; } function register()
{ //获取输入框的值 var uname = $('#uname').val(); var pwd = $('#pwd').val(); //简单校验 if(uname.length<6){ $('#aSpan').text('邮箱长度不能小于六位'); return false; } if(!isEmail(uname)){ $('#aSpan').text('邮箱格式不正确'); return false; } if (checkUname(uname)){ $('#aSpan').text('用户已存在');
return false } 
if(pwd.length<6){ $('#pSpan').text('密码长度不能小于六位');
return false; } hex_pwd = hex_md5(pwd);
$('#pwd').val(hex\_pwd); return true } </script> {% endblock %}

12.1 配置路由

(1)修改 base.html 中“免费注册”的超链接

<div class="register"><a href="/user/register/">注册</a></div>

(2)配置路由

  • 根路由
urlpatterns = \[ path('admin/', admin.site.urls), 
path("", include("goods.urls")), # 引入 goods 应用的映射路由 
urls.py path("user/", include("userapp.urls")) # 引入 userapp 应用的路由 urls.py ]
  • userapp 应用的路由(要先创建userapp应用的 urls.py 文件)
from django.urls import path from userapp import views
​ urlpatterns = \[ path('register/', views.RegisterView\.as\_view()), path('checkUname/', 
views.CheckUnameView\.as\_view()), ] ​

12.2 创建视图

from django.http import HttpResponse, JsonResponse from django.shortcuts import render from django.views import Viewfrom userapp.models import UserInfo ​ 
​ # Create your views here. class RegisterView(View): def get(self, request): return render(request, "register.html") ​ 
def post(self, request): # 获取请求参数 uname = request.POST.get('uname', '') pwd = request.POST.get('pwd', '')
# 插入数据库 user = UserInfo.objects.create(uname=uname, pwd=pwd)
# 判断是否注册成功 if user: return HttpResponse('True') 
# 注册成功 return HttpResponse('False') 
# 注册失败 ​
​ class CheckUnameView(View): 
def get(self, request): 
# 获取请求参数 uname = request.GET.get('uname', '')
# 根据用户名去数据库中查询 user\_list = UserInfo.objects.filter(uname=uname) ​
flag = False # 判断用户名是否存在 if user\_list: flag = True # 如果存在就返回 Truereturn JsonResponse({'flag': flag}) ​

12.3 创建页面 register.html

  • 创建 userapp/templates/register.html
{% extends 'base.html' %} {% block title %} <title>用户注册</title> {% endblock %} {% block headerjs %} <script type="text/javascript" src="/static/md5-min.js"></script> {% endblock %} {% block main %} <div class="login-body"> <div class="login-card"> <div class="login-top"> <h3>新用户注册</h3> <h5>尊敬的用户,欢迎您回来!</h5> </div> <div class="login-bottom"> <form method="post" action="/user/register/" onsubmit="return register()"> <div class="login-input-box"> {% csrf\_token %} <input type="text" id="uname" name="uname" value="" class="login-admin active" placeholder="邮箱注册"> <span style="color:red;" id="aSpan"></span> <input type="password" id="pwd" name="pwd" value="" class="login-password" style="border: 1px solid red"> <span style="color:red;" id="pSpan"></span> <button class="login-btn" style="color: white;text-decoration: none;cursor: pointer">注册</button> </div> </form> <div class="login-img"> <img src="/static/login_05.png" alt="转存失败,建议直接上传图片文件"> </div> </div> </div> </div> {% endblock %} {% block footer %} <script> function isEmail(str){ var reg = /^\[a-zA-Z0-9\_-]{6,}@\[a-zA-Z0-9\_-]+(.\[a-zA-Z0-9\_-]+)+$/; return reg.test(str); } {#用户名唯一性校验#} function checkUname(username){ var flag = false; $.ajax({ url:'/user/checkUname/', type:'GET', async:false, data:{"uname":username}, success:function (result) { var flag2 = result.flag; if( flag2 ){ flag = true; $('#aSpan').html('用户名已存在!'); } } }); return flag; } function register(){ //获取输入框的值 var uname = $('#uname').val(); var pwd = $('#pwd').val(); //简单校验 if(uname.length<6){ $('#aSpan').text('邮箱长度不能小于六位'); return false; } if(!isEmail(uname)){ $('#aSpan').text('邮箱格式不正确'); return false; } if (checkUname(uname)){ $('#aSpan').text('用户已存在'); return false } if(pwd.length<6){ $('#pSpan').text('密码长度不能小于六位'); return false; } hex_pwd = hex_md5(pwd); $('#pwd').val(hex\_pwd); return true } </script> {% endblock %}