用ajax实现添加用户的功能,使用Ajax和forms实现注册用户所需功能

2023-10-30

这次给大家带来使用Ajax和forms实现注册用户所需功能,使用Ajax和forms实现注册用户所需功能的注意事项有哪些,下面就是实战案例,一起来看一下。

前端HTML

{% load static %}

{% get_static_prefix as getstatic %}

注册页面

.title-top {

padding: 0;

font-size: 21px;

margin-top: 40px;

}

.form-padding {

padding-right: 65px;

}

.has-feedback .country-code {

width: 53px;

text-align: right;

padding-right: 5px;

}

.mobile-control-wrap {

display: flex;

}

.mobile-num {

margin-left: 10px;

}

.form-horizontal .form-group {

margin-right: -15px;

margin-left: -15px;

}

.body-box {

margin-top: 70px;

height: 567px;

width: 68%;

}

.cnblogs-btn-blue {

color: white;

padding: 6px 14px;

letter-spacing: 1em;

padding-left: 2em;

background-color: RGB(70, 136, 214);

text-align: center;

}

.cnblogs-btn-blue :hover {

color: white;

}

.navbar {

background-color: RGB(40, 62, 92);

}

.side-img-box {

height: 300px;

position: relative;

padding-left: 0;

margin-top: 168px;

}

.side-img-box img {

position: relative;

width: 100%;

top: 50%;

transform: translateY(-50%);

border-radius: 8px;

}

.text-danger {

float: right;

}

.img-thumbnail {

width: 100px;

height: 100px;

margin-bottom: 20px;

margin-top: -10px;

}

#avatr_img {

margin-left: 237px;

}

TIM%E6%88%AA%E5%9B%BE20180205110238.png

注册新用户


novalidate="novalidate">

用户头像

头像

邮 箱

{{ register_form.email }}

昵称

{{ register_form.nik_name }}

密 码

{{ register_form.password }}

确认密码

{{ register_form.repeta_pwd }}

class="btn ladda-button center-block cnblogs-btn-blue" value="登录">

* “注册” 按钮,即表示您同意并愿意遵守

href="//passport.cnblogs.com/agreement.html">用户协议

{% csrf_token %}

registersideimg.png

上面的代码只是HTML ,而JavaScript在下面实例中

$("#avatar").change(function () {

var chooice_file = $(this)[0].files[0];

var reader = new FileReader();// 注意这里,预览本地文件

reader.readAsDataURL(chooice_file);

reader.οnlοad=function () {

$("#avatar_img").attr("src",this.result)

}

})

function regesite() {

var formdata = new FormData(); //z注意这里 涉及文件上传

formdata.append("email",$("#id_email").val());

formdata.append("nik_name",$("#id_nik_name").val());

formdata.append("password",$("#id_password").val());

formdata.append("repeta_pwd",$("#id_repeta_pwd").val());

formdata.append("valid_img",$("#avatar")[0].files[0]);

formdata.append("csrfmiddlewaretoken",$("[name='csrfmiddlewaretoken']").val());

$.ajax({

url: "{% url "regeste" %}",

type: "POST",

data:formdata,

contentType:false,

processData:false,

success: function (data) {

response_data = JSON.parse(data)

if(response_data.user){

location.href="{% url " rel="external nofollow" login" %}"

}else {

// 清空上次错误信息

$("form span").html("")

$(".has-feedback").removeClass("has-error")

$.each(response_data.error_msg,function (fiel, error_info) {

// 显示错误信息

$("#id_"+fiel).parent().addClass("has-error");

$("#id_"+fiel).next().html(error_info[0]);//显示全局错误 // 注意这里

if(fiel=="all"){

$("#id_repeta_pwd").next().html(error_info[0]).css("color","red")

}

})

}

}

})

}

FileReader

FileReader主要用于将文件内容读入内存,通过一系列异步接口,可以在主线程中访问本地文件。

使用FileReader对象,web应用程序可以异步的读取存储在用户计算机上的文件(或者原始数据缓冲)内容,可以使用File对象或者Blob对象来指定所要处理的文件或数据。

设计RegisterForm组件from django import forms

from . import models

from django.forms import widgets

from django.core.exceptions import NON_FIELD_ERRORS, ValidationError

class RegisterForm(forms.Form):

nik_name = forms.CharField(max_length=32,

widget=widgets.TextInput(attrs={"class":"form-control"}),

error_messages={"required":"用户不能为空"})

email = forms.EmailField(widget=widgets.EmailInput(attrs={"class":"form-control"}),

error_messages={"required":"邮箱不能为空", "invalid":"邮箱格式错误"})

password = forms.CharField(min_length=5, widget=widgets.PasswordInput(attrs={"class":"form-control"}),

error_messages={"required": "密码不能为空",

"min_length":"最小长度5位",

}

)

repeta_pwd = forms.CharField(widget=widgets.PasswordInput(attrs={"class":"form-control"}),

error_messages={"required": "密码不能为空"})

def clean_nik_name(self):

name = self.cleaned_data.get("nik_name")

users = models.UserInfo.objects.filter(nik_name=name)

if not users:

return name

else:

raise ValidationError("用户已存在")

def clean(self): //全局钩子

pwd = self.cleaned_data.get("password")

repeta_pwd = self.cleaned_data.get("repeta_pwd")

if pwd and repeta_pwd:

if pwd == repeta_pwd:

return self.cleaned_data

else:

raise ValidationError("两次密码不一致")

else:

return self.cleaned_data

服务器def post(self,request):

reg_response = {"user": None,"error_msg":""}

register_form = RegisterForm(request.POST)

if register_form.is_valid():

email = request.POST.get("email")

nik_name = request.POST.get("nik_name")

password = request.POST.get("password")

repeta_pwd = request.POST.get("repeta_pwd")

valid = request.FILES.get("valid_img") #注意这里使用的request.FILES.get("")

if not valid:

valid = "avatardir/TIM图片20171209211626.gif"

check_user = models.UserInfo.objects.create_user(username=nik_name,nik_name=nik_name, email=email,

password=password,

avatar=valid

) # 注意这里保存导数据库中的是图片路径,并不是图片

reg_response = {"user": "user", "error_msg": ""}

return HttpResponse(json.dumps(reg_response))

else:

reg_response["error_msg"]=register_form.errors

return HttpResponse(json.dumps(reg_response))

Model中 Userifor 的imgavatar = models.FileField(upload_to='avatar/', default="/avatar/default.gif", verbose_name="主键")

注意:

upload_to :默认把文件夹创建至根目录下,如创建至指定位置,需要在setting中配置media。

如:希望用户上传的文件单独存储,在setting中配置,MEDIA_ROOT= os.path.jion(BASE_DIR,"blog","media")

//此时,用户上传文件时,先创建并将文件保存至“putImg”文件夹中,“putImg”,然后将“putImg”放至对应的路径中。

# media 配置

url(r"^media/(?P.*)",sever,{"document_root":setting.MEDIA_ROOT})

配置好上面的url 后,用户可以访media 文件夹下面的所有文件

注意:server ,是从django.views.static import server导入

from . import settings //url中的使用

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用ajax实现添加用户的功能,使用Ajax和forms实现注册用户所需功能 的相关文章

  • Elasticsearch的数据备份和恢复以及迁移

    目录 1 为什么备份 2 数据备份 3 数据恢复 4 ES备份数据迁移目标服务器 5 脚本备份恢复 1 为什么备份 常见的数据库都会提供备份机制 以解决在数据库无法使用的情况下通过备份来恢复数据减少损失 Elasticsearch 虽然有良
  • Pytorch建模过程中的DataLoader与Dataset

    pre line height 125 td linenos normal color inherit background color rgba 0 0 0 0 padding left 5px padding right 5px spa
  • python每日学5:python工程(大型项目)的组织架构:包、模块、类、方法

    题外话 在大型项目中 往往一个个模块已经不够组织起项目了 就比如一个文件夹下放了上千个文件 那想找到某一个文件就会变得困难 管理学中有种说法 一个管理者最适合管理 的对象是7个 假如程序的基本单元是函数 一个类包含7个函数 一个模块包含7个
  • C#怎么判断一个Socket是否连接

    判断Socket是否连接上 需要通过发包来确认 1 检查一个Socket是否可连接 2 private bool IsSocketConnected Socket client 3 4 bool blockingState client B
  • openGL之API学习(八十一)glsl的双精度double-precision

    10年以前的旧显卡基本上是没有双精度的 新显卡使用双精度需要开启GL ARB vertex attrib 64bit 和 GL ARB gpu shader fp64扩展 并且显卡架构要在SM5以上 就算有些显卡支持双精度类型 但是一些函数
  • java学生信息管理系统MVC架构

    一 项目结构 学生信息管理系统分三层进行实现 student java主要提供数据 cotroller java的功能是绑定试图和计算数据 Stuview java用于单一的用来显示数据 二 源码 1 1 Student 类 FileNam
  • 利用altium怎么生成PDF及怎么1:1打印文档

    画完板子之后 还要生成原理图PDF文档 供其他设计人员参考和指正 上图红框标注的两个地方 分别用于打印预览设置和生成原理图PDF 那么若是生成原理图PDF文档 则选择smart PDF即可 点击smart PDF后 点击next 上图中可以
  • vs如何断点?如何判断循环语句哪次出问题?

    红色的小点 按Fn F9 鼠标打字停在哪一行就会在哪一行 可以切换断点 再按一下则小红点消失 黄色的箭头 按Fn F10 再按Fn F10 就会到下一行 如果按Fn F5箭头会直接跳到红色的小点处 怎么看循环语句哪一次循环出问题呢 在断点
  • 算法:用Java实现双轴快速排序(DualPivotQuickSort)

    本文是用Java实现双轴快速排序 我找不到参考的文章地址了 十分抱歉 在此感谢参考文章的原作者 是你给了我思路和灵感 双轴快速排序和普通的快速排序不同的地方在于 普通的快速排序选出一个数字 作为一个基准值 然后通过数组值交换的方式 让左边区
  • Ant Design Pro项目中 提示:找不到模块“@ant-design/pro-components”或其相应的类型声明

    Ant Design Pro中在使用 StatisticCard 指标卡组件时候 按照官方的文档从 ant design pro components 中引入这个组件发现会报错 提示找不到模块 ant design pro componen
  • [659]linux安装RabbitMQ

    文章目录 安装Erlang 安装rabbitmq 关闭防火墙 否则非本地设备无法访问RabbitMQ服务 查看RabbitMQ运行状态 设置开机启动 添加用户 删除一个用户 修改用户的密码 设置用户角色 查看用户 设置用户权限 添加虚拟机
  • java 打印 发票_基于Excel和Java自动化:发票生成器

    对于销售人员 使用Excel创建发票是很常见的 但是该过程通常涉及许多容易出错的手动操作 例如输入数据 复制 粘贴等 如何实现一个可以将数据从数据库自动填充到发票Excel模板中 而无需再辛苦手动输入 从繁重的手动录入中解脱出来 并且避免认
  • win10计算器rsh_厉害了我的哥!win10计算器自带程序员模式太强大了!

    生活工作中常常会遇到用计算器的地方 比如算工资 算房贷啦 算卡路里等 一个有诸多功能的计算器能帮你省去大部分时间 你们知道吗 在windows计算器里 竟然还有程序员模式 可进行各种逻辑运算 快来和小编一起来看一下吧 相信大家Windows
  • C++几个关键字总结——const、static、extern、volatile

    1 const const 基本原理 被修饰的对象的值不可以被修改 const 推出的初始目的 正是为了取代预编译指令 消除它的缺点 同时继承它的优点 1 const修饰基本数据类型 表示常量 必须进行初始化 有以下两种初始化的方式 编译时
  • 数据分析中的mysql基础

    引言 之前的博客对mysql的一些入门知识进行了讲解 该博客将对sql的四个分类进行讲解 之前博客地址 https blog csdn net weixin 45696161 article details 106310108 sql的分类
  • python热度图改坐标_python matplotlib imshow热图坐标替换/映射实例

    今天遇到了这样一个问题 使用matplotlib绘制热图数组中横纵坐标自然是图片的像素排列顺序 但是这样带来的问题就是画出来的x y轴中坐标点的数据任然是x y在数组中的下标 实际中我们可能期望坐标点是其他的一个范围 如图 坐标点标出来的是
  • 笔记本关机后耗电严重问题怎么解决?一秒快速解决笔记本电脑关机掉电快的问题

    前言 或许许多使用笔记本的朋友都会遇到一个很头疼的问题 那就是笔记本关机放一段时间后 一周以内或者几个小时 电池电量消耗非常大 那么到底是什么原因导致笔记本关机后耗电快呢 如何解决耗电快的问题呢 下面详细讲述问题点及其解决方法 几个问题点
  • mysql数据库字符集_超详细的MySQL数据库字符集总结,值得收藏

    MySQL支持多种字符集 character set 提供用户存储数据 同时允许用不同排序规则 collation 做比较 下面基于MySQL5 7介绍一下字符集相关变量的使用 一 字符集 字符序的概念与联系 在数据的存储上 MySQL提供
  • c语言负数翻转问题

    1 在项目中 我们经常会用到变量 那么在变量的定义和传递过程中 经常会出现负数的翻转问题 int test funtion return 1 void poll fun unsigned int a while a gt 250 print

随机推荐

  • 你是一名努力工作的程序员,还是懒惰的程序员?

    当人们在进行一项体力工作时 你很容易评估他们工作的努力程度 你可以看到他们的身体动作 看他们流了多少汗水 也可以去看他们的工作成果 砖墙越砌越高 地上的洞越来越大 对努力工作的认可和奖励是人类一个非常基本的本能 这也是为什么我们对耐力运动如
  • 自已动手修改同花顺K线周期的快捷键

    同花顺的1分钟 5分钟 15分钟 30分钟 60分钟的K线周期快捷键为M1 M5 M15 M3 M6 不像大智慧为1 2 3 4 操作很是方便 让我们来把它给改一改 1 下载Restorator http www downxia com d
  • Java批量发带远程附件的邮件2--发送远程附件

    业务背景及需求 公司需要统一发送同类型的邮件给一批人时 比如发送员工个人薪资表分别至个人邮箱 此类邮件标题 内容 发送人等基本一致 且需要带附件 而其附件是收件人的隐私性个人信息 若通过上传文件保存到数据库里然后在发邮件的方式 浪费空间和时
  • WiFi以及天线测试项目详解

    1 相关术语 天线增益 天线增益就是某天线在最大辐射方向上的辐射能量跟点源天线 dBi 或偶极子天线 dBd 在同方向上的辐射能量的比值 天线规格书的几个参数 Gain dBi 在相同的输入功率下 天线在空间某点的辐射功率与理想无方向性点源
  • zabbix详解(十一)——zabbix监控MySQL性能实战

    今天继续给大家介绍Linux运维相关知识 本文主要内容是zabbix监控MySQL性能 一 实战目的 通过在zabbix客户端编写脚本 实现对MySQL数据库的性能进行信息进行提取 并配置成zabbix的监控项 以实现zabbix对MySQ
  • CSDN,这东西我得退了

    断更了那么久 得有个交代了 Albus Dumbledore好我是兄弟们 这一年里很高兴认识大家 CSDN这东西也让我接触到了很多有关技术和编程之类的东西 也收获了很多粉丝 但是 我因为学业及其他原因 这个网站我得先退了 账号我不会注销 说
  • [git]分支操作

    Checkout 相当于切换到该分支 但是因为不能直接操作远程分支 会在本地同步一个完全一样的分支 注意 切换分支前本地先进行提交 add commit 否则有可能代码会丢失 New Branch from Selected 创建一个新的分
  • 多态与多态对象模型

    这里简单介绍下什么是多态 多态的构成条件 多态原理以及多态的对象模型 在介绍多态之前 先简单的介绍下什么是虚函数 虚函数 类的成员函数前面加virtual关键字 则这个成员函数称为虚函数 注 1 除静态成员函数 2 内联函数不能定义为虚函数
  • NetworkManager is not running-liunx nmtui不可用

    NetworkManager 是CentOS 7 下的网络配置工具 如果遇到提示NetworkManager is not running那么需要安装一下 之前在CentOS 6下编辑网卡 直接使用setup工具就可以了 但在新版的Cent
  • error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token

    学会C语言也挺长时间了 当时写的时候就记得经常出现这个错误 在网络上查找感觉原因也林林总总 有时候也挺头疼的 就想着在这里记录一下原因 从字面上看是语法上的错误 缺少一些必要的符号 2019 4 26 在文件中找了很久 没有找到语法错误 后
  • storm七之storm java示例

    通过前面6个章节 我们大致了解apache storm的核心细节了 现在我们开始写一些简单的代码 来感受下storm的魅力 场景 移动呼叫日志分析 移动电话呼叫号及其持续时间将作为Apache stormd的输入流 storm将根据拨号方和
  • ARM(IMX6U)裸机之I.MX6ULL硬件启动方式的选择

    参考 Linux之ARM IMX6U 裸机之I MX6ULL启动方式详解 作者 一只青木呀 发布时间 2020 08 09 16 32 07 网址 https blog csdn net weixin 45309916 article de
  • qemu-system-x86_64方式创建KVM虚拟机

    一 QEMU介绍 QEMU是一款高效而实用的模拟器及虚拟机监管器 Virtual Machine Monitor VMM 主要提供两种功能给用户使用 一是作为用户态模拟器 利用动态代码翻译机制来执行不同于主机架构的代码 二是作为虚拟机监管器
  • CentOS 7 virt-install 命令行方式(非图形界面)安装KVM虚拟机

    环境及网卡配置请参考 https blog csdn net mshxuyi article details 98305715 创建镜像目录 mkdir p home vms virt install 配置文件 virt install n
  • Jenkins+allure执行unittest用例并生成allure报告(史上最全)

    对于allure报告的生成已经不是很新鲜的事情了 今天根据题目给大家做一个详细的配置过程说明一下 不管你的项目是pytest还是unittest都可以使用这种方式实现allure结果的产出 但是你的case一定要遵循框架的规则才可以 废话少
  • 【多区域电力系统模型】三区域电力系统的LQR和模糊逻辑控制(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 多区域电力系统模型是用来描述由多个区域组成
  • 群晖传文件到服务器,文件上传到群晖服务器

    文件上传到群晖服务器 内容精选 换一换 监控数据上报功能可以将系统中采集到的监控数据写入到文本文件 并以FTP或SFTP的形式上传到指定的服务器中 使用该功能前 管理员需要在FusionInsight Manager页面进行相关配置 监控数
  • 第十八章 多线程处理

    1 多线程基础 1 1 基本概念 进程 进程是操作系统中的一个基本概念 进程包含了一个程序运行所需的资源 一个进程包含多个线程 线程 线程是进程的基本执行单元 进程入口执行的第一个进程称为主线程 任务 任务是一个工作单元 目的是生成结果值
  • 闲鱼下单时显示服务器繁忙,闲鱼翻车记。闲鱼用验机报告需要注意的问题,否则分分钟被水鱼...

    闲鱼翻车记 闲鱼用验机报告需要注意的问题 否则分分钟被水鱼 2019 10 03 21 35 34 62点赞 75收藏 163评论 本文主要想说的 闲鱼验机报告觉得不合适 一定要拒绝本次交易 对自己有信心的话 干脆不要选验机服务 原由请看楼
  • 用ajax实现添加用户的功能,使用Ajax和forms实现注册用户所需功能

    这次给大家带来使用Ajax和forms实现注册用户所需功能 使用Ajax和forms实现注册用户所需功能的注意事项有哪些 下面就是实战案例 一起来看一下 前端HTML load static get static prefix as get