此时数据库虽然已经添加了数据,但若是你继续刷新浏览器数据库也会保存重复的数据,javascript
这就须要重定向,咱们须要在咱们刷新浏览器的时候,数据库不会从新添加剧复的数据html
转发:一次请求和响应,请求的地址没有发生变化, 请求数据被服务器内部的资源共享java
若是此时刷新页面就会出现重作现象jquery
重定向:一次以上的请求和响应,请求地址发生一次以上的变化。若是此时刷新页面不会出现重作现象ajax
咱们须要在咱们的views.py里面导入redirect和reverse模块,而后须要在咱们刷新的时候跳转到另外一个页面, 修改一下代码sql
同时咱们须要在BlogUser\urls.py里边配置路径,同时添加app_name='user'shell
接着在blog\urls.py路径里边添加 namespace='user’数据库
接着咱们从新运行项目 再次提交 能够看到地址栏内地址再次刷新并不会有变化,数据库也不会重复保存浏览器
注册新用户的时候咱们要保证用户名不能重复 咱们须要修改models.py里面的内容,为数据库添加惟一约束服务器
但这时咱们的数据库并无发生变化,由于咱们数据库已经有重复的用户名了,已经违背了原则,因此咱们能够将数据库中生成的两个表全都删去而后从新建立
接着咱们须要从新执行manage.py的shell命令---点击Tools->选择Run manage.py
咱们依然在manage.py@blog后面输入那三个命令
一、makemigrations BlogUser---敲回车,由于咱们已经有了0001这个表,因此此次生成的是0002,接着咱们在次执行
二、sqlmigrate BlogUser 0002--敲回车,此步骤可省略,直接输入第三个命令进行更新
三、migrate BlogUser 0002--敲回车
这时候咱们能够看见数据库已经建立了两个表,而且表是有约束的当我尝试网表中添加两个username 都为a时数据库报错
咱们能够经过修改views.py中的代码来不让页面显示错误,使当有用户名重复是提示信息直接在页面上提示
但时这时候咱们必须点击提交才会告诉咱们用户名重复,应该在咱们输入密码的时候就告诉咱们用户名重复
这时候咱们须要使用ajax(ajax: jquery 是一种静态资源),不须要咱们提交当咱们输入密码的时候就能够告诉咱们用户名以重复
咱们须要有jquery文件,能够去官网下载,我使用的是jquery-3.3.1,咱们在blog里面建立一个static的文件夹,接着又在里边建立以js的文件夹把咱们的jquery-3.3.1放进去
接着咱们须要在seeting.py里面添加咱们的static文件
接下来在register.html中加上javascript
<title>Title</title> <script type="text/javascript" src="/static/js/jquery-3.3.1.js"></script> <script> $(function (){ $("input[name='username']").blur(function () { //alert("") uname=$("input [name='username']").val() CSRF=$("input[name='csrfmiddlewaretoken']").val() $.ajax({ url:'/BlogUser/getUser', data:{'uname':uname,'csrfmiddlewaretoken':CSRF}, type:'POST', success:function (dat) { if (dat=='True'){ $("span").html("用户名已存在") } else{ $("span").html("用户名可使用") } } }); }); }); </script> </head>
在这写完以前咱们须要在views.py定义一个 getUser(),同时须要导入HttpResponse模块,用来判断用户名有没有重复,同时在页面中显示提示信息
而后咱们在BlogUser\urls.py配置一下路径
而后再启动项目,输入用户名且丢失焦点时,会自动提示用户名可否使用