django--博客项目--新增登录与注册功能。

这次主要实现的功能是登录与注册,上一篇用的是form表单,但是这次用的是django自带的form表单,原理其实跟model一样很像,都是映射(个人理解)。因此代码方面有所改动。

想要使用django的form表单首先需要新建一个fomrs.py文件,之后再该文件里面编写类,这点我觉得和在models.py里面写类是很像的。

因为我们要完成的是登录的和注册功能,因此只要有两个类就够了,一个用来登录,一个用来注册。

直接看登录的代码

登录页面只有两个文本框,一个username和一个password,会写model就会写form了,其实都差不多,只是写的参数不同。

参数里面的label是标签,也就是显示在文本框边上的那几个字。

widget是自定义的样式,forms.TextInput就是文本输入,里面的attr是属性,本质上试一个字典。由于添加了CSS样式,所以效果是这样的。

当然了,不是说在这个forms.py里面写两个类就能直接显示在网页上面了。我们还需要在views.py和login.html上处理这个表单。

先看views.py

显然,这里是要分情况的,因为我们可能会刷新页面而不是提交办单,因此当我们刷新页面时,直接创建一个表单对象,然后直接渲染到login.html上。如果是提交表单的话,也就是POST请求,那么我们新建一个表单对象,并且通过传入request.POST来进行初始化这个表单对象,request.POST就是表单提交的所有数据。

随后通过cleaned_data['username']和cleaned_data['password']来获取数据,这里的cleaned_data是用来获得整理过后的数据。

需要注意的是,接下来的if user is not None,这里的not要去掉,不然登录时会一直提示错误。

所以改成if user is None:后,如果没用登录用户,那么就登录用户,最后重定向回一开始的页面。可以看到request.GET.get()里面有个from参数,这个参数后面跟着的是我们点击登录的那个页面,因此登录成功后会跳转会原来的页面。如果找不到就返回主页。

这是某篇博客的页面,可以看到下面有个登录按钮。然后我们再看这个博客的代码,

在href里面,我们写了一个from参数,后面跟着的是这个发起请求的页面的网址,用request.get_full_path来表示。然后我们点击登录

看到网址栏,我们发现上面的blog/32就是我们刚才那篇博客的地址。

再看login.html

login_form里面有字体,也有冒号这种东西,这里的label标签就是用来去除冒号的。

field.errors.as_text和下面的login_form.non_field_errors都是用来作为报错提示用的。到这里我们才算搞定了这个登录页面。效果图就是第二张图。

以上就是登陆功能。

接下来是注册,其实注册也是一样的,同样需要我们提交表单并检测表单的正确性。最后返回发起请求的博客的页面。

可以看到这里只是改了一些名字而已。

这次只是加上了二次输入密码和邮箱。

跟登录基本一致,这里需要说明的知识创建用户和登录用户,因为我们是注册完之后立即跳回原来的页面,因此这里加上了用户的登录。

创建用户用User.objects.create_user(),提交的表单有几项,参数就有几个。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值