测试平台开发:Django开发实战之注册界面实现(上)

实现注册功能,大概包括以下几个步骤

1、设计ui

##字段

通过看数据库里面的user表里面的字段,可以大概知道需要几个字段:

  • email
  • username
  • password
  • password_confirm

生成简单的ui界面,复制这个html代码

然后在项目路径下面创建一个register.html文件,粘贴刚复制的代码

2、创建视图

def register(request):
    html = open("register.html", encoding="utf-8").read()
    return HttpResponse(html)


3、添加路由,在应用下面添加,项目级路由保持不变

但是,这不是我期望的路由,我期望的路由是:http://127.0.0.1:8000/accounts/register/

那么怎么做呢?换一种思路,重新创建一个和账号相关的路由:

 

 

4、前后端对接

接下来需要做前后端对接,提交数据给到后端:

目前数据是没有给到后端的,那么接下来怎么做呢?

1)让我们的前端可以发送参数

首先在html文件引入axios

2) 编写请求方法

<script src="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/axios/0.26.0/axios.min.js"></script>


  methods: {
        submitForm() {
          this.$refs.vFormRef.getFormData().then( (formData) => {
            // Form Validation OK
            // alert( JSON.stringify(formData) )
			  axios({
				  method:"post",
				  url:"http://127.0.0.1:8000/accounts/register/",
				  data:formData,
			  })
          }).catch( function(error) {
            // Form Validation Failed
            alert(error)
          })
        }
      }

再次发送请求:

 可以加一些请求成功和失败的判断

methods: {
        submitForm() {
          this.$refs.vFormRef.getFormData().then( (formData) => {
            // Form Validation OK
            // alert( JSON.stringify(formData) )
			  axios({
				  method:"post",
				  url:"http://127.0.0.1:8000/accounts/register/",
				  data:formData,
			  }).then(function (response){      //请求成功调用这个函数
			     alert(response.data.message)
		      }).catch( function(error) {
                // Form Validation Failed
                 alert(error.response.data.message)
               })
          }).catch( function(error) {
            // Form Validation Failed
            alert(error.response.data.message)
          })
        }
      }

2)让我们的后端处理请求,编写注册的视图函数:


import json
import os

from django.contrib.auth import login, logout
from django.contrib.auth.base_user import AbstractBaseUser
from django.shortcuts import render
from django.http import JsonResponse, HttpResponse, HttpResponseRedirect, HttpResponsePermanentRedirect
from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
from django.template.loader import render_to_string
from django.urls import reverse
from django.contrib.auth.decorators import login_required

from django.db import connection

from lili.models import Feedback

def register(request):
    if request.method == 'POST':
        # 获取提交的表单数据
        data = json.loads(request.body)
        key_list = [
            "email","username","password","password_confirm"
        ]
        for key in key_list:
            if len(data.get(key)) == 0:
                return JsonResponse({'code': -1,
                                     'message':f"{key}不能为空",
                                     'status': 422})

        if data['password'] != data['password_confirm']:
            return JsonResponse({'code':-2,
                                 'message':"两次密码必须相同",
                                 'status': 322})

        if len(data['password']) < 6:
            return JsonResponse({'code': -3,
                                 'message': "密码长度必须大于等于6",
                                 'status': 322})

        user_list = User.objects.filter(username=data['username'])
        if len(user_list) > 0:
            return JsonResponse({'code': -4,
                                 'message': "用户已经存在,请重新注册",
                                 'status': 222})

        User.objects.create_user(username=data['username'],
                                        password=data['password'],
                                        email=data['email']
                                        )

        return JsonResponse({'code':0,
                             'message':"注册成功",
                             })

根据校验的逻辑去发送请求

 

 可是这样的用户体验不好,我们希望用户创建成功的同时,也登录成功

这个时候可以对视图函数进行重新编辑,调用djang里面自带的登录方法:

from django.contrib.auth import login

编写html文件的请求成功的部分,希望它重定向到业务页面

submitForm() {
          this.$refs.vFormRef.getFormData().then( (formData) => {
            // Form Validation OK
            // alert( JSON.stringify(formData) )
			  axios({
				  method:"post",
				  url:"http://127.0.0.1:8000/accounts/register/",
				  data:formData,
			  }).then(function (response){      //请求成功调用这个函数
			     alert("请求成功" + response.data.message)
				  //可以重定向到想要他跳转的界面
				  window.location.href ='http://127.0.0.1:8000/lili/submit/'
		      }).catch( function(error) {
                // Form Validation Failed   //请求失败调用这个函数
                 alert("请求失败" + error.response.data.message)
               })
          }).catch( function(error) {
            // Form Validation Failed
            alert(error.response.data.message)
          })
        }

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

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

相关文章

22_Scala集合Seq

文章目录 Seq序列1.构建集合2.List集合元素拼接&&集合拼接3.可变Seq&&List3.1 ListBuffer创建3.2 增删改查3.3 相互转化 Appendix1.Scala起别名2.Seq底层3.关于运算符操作: :4.空集合的表示 Seq序列 –Seq表示有序&#xff0c;数据可重复的集合 1.构建集合 …

整体安全保障服务方案包括哪些方面?

整体安全保障服务方案是一套综合性的措施&#xff0c;旨在保护企业的网络、数据和资源免受各种威胁。主要包含检测、加固、应急保障、安全运营、攻防演练等多项核心能力与服务。 ​安全狗通过专业团队、工具以及专业运营流程&#xff0c;提出了新一代整体安全保障思路&#xff…

开源代码分享(28)-含分布式光伏的配电网集群划分和集群电压协调控制

参考文献&#xff1a; [1] Chai Y , Guo L , Wang C ,et al.Network Partition and Voltage Coordination Control for Distribution Networks With High Penetration of Distributed PV Units[J].IEEE Transactions on Power Systems, 2018:3396-3407.DOI:10.1109/TPWRS.2018…

【深度学习】实验1 波士顿房价预测

波士顿房价预测 代码 import numpy as np import matplotlib.pyplot as pltdef load_data():# 1.从文件导入数据datafile D:\Python\PythonProject\sklearn\housing.datadata np.fromfile(datafile, sep )# 每条数据包括14项&#xff0c;其中前面13项是影响因素&#xff0c…

长方形盒子能容纳定宽的长方形物体最大长度

问题 已知长方形盒子长度a和宽度b&#xff0c;放入一宽度w的长方形物体&#xff0c;求长方形物体最大长度L。 答案 MS Excel公式如下&#xff08;其中B1a&#xff0c;B2b&#xff0c;B3w&#xff09;&#xff1a; L SQRT(B1^2B2^2)-B1*B2*B3*2/(B1^2B2^2)注意 当求得 L ≤…

时间复杂度与空间复杂度(上篇)

目录 前言时间复杂度 前言 算法在运行的过程中要消耗时间资源和空间资源 所以衡量一个算法的好坏要看空间复杂度和时间复杂度&#xff0c; 时间复杂度衡量一个算法的运行快慢 空间复杂度是一个算法运行所需要的额外的空间 一个算法中我们更关心的是时间复杂度 时间复杂度 时…

使用idea管理docker

写在前面 其实idea也提供了docker的管理功能&#xff0c;比如查看容器列表&#xff0c;启动容器&#xff0c;停止容器等&#xff0c;本文来看下如何管理本地的docker daemon和远程的dockers daemon。 1&#xff1a;管理本地 双击shift&#xff0c;录入service&#xff1a; …

24年审计师报名时间汇总所需材料提前准备

2024审计师报名本周开始&#xff08;5月10日起&#xff09;&#xff0c;各地报名时间不一&#xff0c;报名指南整理好了&#xff01; ✅全国报名时间汇总报名费用资格审核&#xff1a;P1~P2。 ✅2024年审计师考试科目&#xff1a; 《审计相关基础知识》和《审计理论与实务》 ✅…

如何创建微信小程序?只需3步完成小程序制作

微信&#xff0c;中国最大的社交媒体应用程序&#xff0c;几个月前推出了微信小程序&#xff0c;这一神奇的功能立即大受欢迎。这些小程序让在中国注册的商业实体所有者创建一个小程序来与微信用户互动。这些小程序不需要在用户手机上进行任何安装&#xff0c;只需通过微信应用…

HP Z620 服务器打开VTx虚拟技术

在使用Virtual Box的时候&#xff0c;虚拟主机启动报错&#xff1a;提示需要VTx。于是到bios里面去设置VTx。 这里有个小坑&#xff0c;就是HP 的bios配置里面&#xff0c;VTx不在常规的“System Configuration”、“Advanced”等地方&#xff0c;而是在“Security”菜单里&…

关于2024年上半年软考考试批次安排的通告

按照《2024年计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试工作安排及有关事项的通知》&#xff08;计考办〔2024〕1号&#xff09;文件精神&#xff0c;结合各地机位实际&#xff0c;现将2024年上半年计算机软件资格考试有关安排通告如下&#xff1a; 一、考…

【排序算法】之冒泡排序

一、算法介绍 冒泡排序&#xff08;Bubble Sort&#xff09;是一种基础的排序算法&#xff0c;它的主要思想是通过重复遍历待排序的列表&#xff0c;比较每对相邻的元素并根据需要交换它们&#xff0c;使得每一遍遍历都能将未排序的最大&#xff08;或最小&#xff09;元素“冒…

RH 414膜电位荧光探针,161433-30-3,具有出色的荧光性质和高度专业化的反应原理

一、试剂信息 名称&#xff1a;RH 414膜电位荧光探针CAS号&#xff1a;161433-30-3结构式&#xff1a; 二、试剂内容 RH 414膜电位荧光探针是一种基于荧光共振能量转移&#xff08;FRET&#xff09;技术的荧光染料&#xff0c;具有出色的荧光性质和高度专业化的反应原理。…

Cordova 12 Android 不支持 http 原因探索

最近在升级 Cordova 到最新版本&#xff0c;升级完成后发现无法请求网络&#xff0c;研究了两次最终发现解决方案。 发现控制台中有日志输出&#xff0c;提示当前是 https &#xff0c;无法直接访问 http。 [INFO:CONSOLE(225)] "Mixed Content: The page at https://lo…

如何更好地使用Kafka? - 运行监控篇

要确保Kafka在使用过程中的稳定性&#xff0c;需要从kafka在业务中的使用周期进行依次保障。主要可以分为&#xff1a;事先预防&#xff08;通过规范的使用、开发&#xff0c;预防问题产生&#xff09;、运行时监控&#xff08;保障集群稳定&#xff0c;出问题能及时发现&#…

tf2使用savemodel保存之后转化为onnx适合进行om模型部署

tf2使用savemodel保存之后转化为onnx适合进行om模型部署 tf保存为kears框架h5文件将h5转化为savemodel格式&#xff0c;方便部署查看模型架构将savemodel转化为onnx格式使用netrononnx模型细微处理代码转化为om以及推理代码&#xff0c;要么使用midstudio tf保存为kears框架h5文…

设计严谨,思路绝妙!这篇高级孟德尔随机化研究:药靶、共定位,发文一区(IF=8.9)!...

现在越来越多的学者在用孟德尔随机化高级方法发文&#xff0c;今天我们看的这篇这篇药靶孟德尔随机化&#xff0c;还用了共定位分析方法&#xff0c;亮点在于它的设计严谨&#xff0c;思路绝妙&#xff0c;一起看下去吧&#xff01; 2024年4月21日&#xff0c;四川大学华西医院…

机器人码垛机的主体结构及技术特点

在现代物流和生产线上&#xff0c;机器人码垛机以其高效、准确的特点&#xff0c;成为了不可或缺的重要设备。那么&#xff0c;这个神奇的机器人究竟由哪些部分组成?它的内部结构又有哪些奥秘呢?接下来&#xff0c;就让我们一起揭开它的神秘面纱! 一、机器人码垛机的主体结构…

每日OJ题_贪心算法三②_力扣553. 最优除法

目录 力扣553. 最优除法 解析代码 力扣553. 最优除法 553. 最优除法 难度 中等 给定一正整数数组 nums&#xff0c;nums 中的相邻整数将进行浮点除法。例如&#xff0c; [2,3,4] -> 2 / 3 / 4 。 例如&#xff0c;nums [2,3,4]&#xff0c;我们将求表达式的值 "…

【Leetcode每日一题】 穷举vs暴搜vs深搜vs回溯vs剪枝_全排列 - 子集(解法2)(难度⭐⭐)(72)

1. 题目解析 题目链接&#xff1a;78. 子集 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 为了生成一个给定数组 nums 的所有子集&#xff0c;我们可以利用一种称为回溯&#xff08;backtracking&#xff09;的算法…
最新文章