django 做一个blog(2)

这一节,我们接着上一张-----博客的注册继续讨论

在上一张的时候,我们做到最后,已经可以在数据库中成功地添加了数据;但是会有个隐藏着的一个问题,就是继续刷新浏览器,数据库会重复多次保存这个数据!

 

这个时候呢,就碰到了重定向问题;我们所需要的是在不论怎么去刷新浏览器,数据库中都不会重复添加数据

 

1.关于转发和重定向,我们需要做一个了解

转发:一次请求和响应,请求的地址没有发生变化,如果此时刷新页面就会出现重做现象。

重定向:一次以上的请求和响应,请求地址发生一次以上的变化。如果此时刷新页面不会出现重做现象。

 

具体的操作是这样的:

A) views.py文件中导入redirect reverse 模块,

B) templates文件夹下bloguser里面创建一个showhtml文件

C) show.html文件里面修改代码,在重定向那块----->通过用户的ID来显示到页面上

D) 然后到bloguser\urls.py文件里配置路径,同时添加 app name = user

E) 接着要在pyblogsys\urls.py文件里namespace那块,也给个名字 user , 这两处名字要保持一致!!

 

改完之后,在运行项目提交,就能发现不管刷新多少次浏览器,页面都不发生变化,数据库也不再重复的保存数据

 

 

2.上一个问题解决了,我们就得思考下一个问题:在注册的时候,要保证用户名不重复,该怎么做?

想达到这样的效果,需要去models.py文件中修改一些代码

 

在这里,又会跳出一个新难题---->数据冗余(一个数据集合中重复的数据),它会产生一系列的问题:

A) 数据多次出现,表所占的空间会变大,就导致了硬盘浪费

B) 可能导致数据不一致

解决的办法就是:

1)数据库约束 唯一约束

2)通过代码

 

我们在models.py中创建模型,首先要导入models这个类,我们自己新建的类套继承这个类下面的Model

 

加一个唯一约束unique ,然而数据库没什么变化,我也不知道是什么原因,就做了一些尝试 将之前数据库生成的表全删了(也可以把表内容删了),去重新建了表

创建表的方法,在上一张讲过,使用 Ctrl+Alt+R


数据库中已经存在了这两张新的表,而且因为已经添加了唯一约束unique,这个时候往表里面加两个一样的数据,就会报错了 说明不会再出现数据冗余的情况了!

 

 

3.当我们运行程序的时候,在注册页面,提交数据库中已经存在的数据注册,就会跳出提示错误的页面,生活中比如淘宝的注册,就不会出现这样的跳转,只是会提醒用户,这个名字被占用了!

要想达到这样的效果,我们需要去views.pyadd.html文件中修改一些代码

 

修改好了后再运行一下项目试试,还是去提交已经存在的数据,会发现不再跳出错误提示的页面,我们点击提交后,在用户名填写框后,出现此用户名已经被占用!请换一个”字样

 

不点提交,啥也不出现,这跟现实有点差距啊。。。 不是应该在输入用户名,进行下一步提交密码的时候,就出现此用户名被占用”嘛

    不用担心,这个也好解决,在学习js的时候,我们碰到过Ajax ( jQuery:一种静态资源 )

 

A)  先把文件下载下来,下载路径是:http://jquery.com/    
在根目录下新创建一个static的文件夹,再在static文件夹里创一个JS文件夹, 把下载好的jquery3.3.1文件放进去就行了

B)  接着我们需要在setings.py里面添加我们的static文件

C)  接着我去运行项目在浏览器地址栏输:http://127.0.0.1:8000/static/js/jquery-3.3.1.js结果为

D)  说明我们可以使用jquery文件了,我们在add.html中加上javascript

E)  在这写完之前我们需要在views.py定义一个 hasname(),同时需要导入HttpResponse模块,用来判断用户名有没有重复,同时在页面中显示提示信息

F)  然后我们在bloguser\urls.py配置一下路径

然后运行项目就可以了,存在的数据,就自动提示--->已经被占用  新的数据提交,就显示注册成功!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值