一. 基于类来定义view.py
diango中使用基于类来定义views的功能,其实更加方便,因为这样可继承一些定义好的基类,来减少我们的代码量
 
1. 使用基于类的方法,来重新定义user/views.py中的my_login函数功能
 
1.1首先引入基类中的View类,from django.views.generic.base import View,这个类中包含用户请求的get, post等方法
我们只需重新定义它get, post方法即可
 
 
1.2. 修改users/urls.py
 
 
 
2. 后台登陆表单的验证功能
2.1首先新建一个python文件 users/forms.py
 
2.2,在users/views.py中使用此验证功能
首先引入LoginForm,然后创建一个它的实例对象:login_form
调用对象的is_valid()函数来对表单进行验证,验证标准就是我们在users/form.py定义的
添加判断语句,使验证合法但用户名或密码真是错误的时候才显示用户名或密码错误;验证不成功时,将login_form返回前端
 
2.3  将验证错误信息显示在前端页面中
在if login_form.is_valid()这行代码打上断点,然后进行debug运行mxonline时,在前段页面上故意写错登陆信息,可以发现一个login_form的错误提示信息,它有一个_errors的变量,类型为字典,包含了出错了信息。
所以只需要把这个_errors字典里的信息显示在前端页面就行了,使用的时候可去掉前面的"_"
 
在login.html的大概71行用户名样式代码上,添加如下代码,其中errorput表示当用户名有错误时,用户名的输入框外边缘会标红
同样的,在大概76行密码样式处也添加类似代码
 
在81行左右添加如下代码,让出错信息显示在页面上
 
 
 
 
cookie和session
 
 
一般用户请求服务器端信息,都是无状态请求。用户端请求数据,然后服务端返回数据。下次请求相同数据时重复这样的操作
 
cookie
有些商业网站想记录用户信息,从而优化用户体验,就需要用到有状态请求,比如淘宝想记录用户的商品浏览记录
用户A想访问淘宝中的手机信息的过程如下:
1)用户向服务器请求手机信息,
2)服务器接收到请求后,首先会判断时候有用户A的信息,没有的话就给用户A分配一个ID=1,并且随手机信息一起返回用户A
3)用户A保存此ID=1到Cookie中
4)用户B在请求时,用上ID=1的cookie信息,就能访问到用户A的相关信息
 
session
但是cookie信息是存在本地的,有一定的安全隐患,为了解决安全问题,就引入了session
1. django中使用login函数,根据用户名和密码生成一个session id的字符串,保存在数据库django_session表中
 
2. 当用户登陆的时候,就可以在django_session表中看到相应的session信息,用户退出时,session信息自动清空
其中session_key发到浏览器叫做session id
 
3. session信息怎么转为用户名和密码的呢,
在django中的settings.py中有一个叫django.contrib.sessions的app。这个app会拦截我们每次的request请求,在request中找到session id,然后在数据表中进行查询,然后通过session key去找到session data,此时直接为我们取出user
在服务器返回浏览器的response中也会直接加上session id
 
 
 
 
二. 用户注册1
 
1. users/views.py中添加用户注册的view
 
2. 配置对应URL
mxonline/urls.py中修改为如下
 
users/urls.py中修改为如下,因为login和register都是users应用下的视图,所以主urls.py可以不变,只在users/urls.py中修改即可
 
3. 在index.html中主页添加url模板,在45行左右修改为
其中users为mxonline/urls.py中命名空间的名字,register为users/urls.py中URL模式的名称
 
4. 修改register.html中css的文件位置
方法1,把文件中的..全部修改为static
方法2,使用static模板,这样的好处是只修改settings.py中的STATIC_URL变量值即可修改所有前端中css的位置
1)在registe.html中第三行添加 {% load staticfiles %}
2) 将原格式href="../css/reset.css" 修改为 href="{% static 'css/reset.css' %}"
 
 
 
 
 

mxonline实战4,用户登陆页面2和用户注册1的更多相关文章

  1. Vuejs实战项目:登陆页面

    1.在view文件夹下创建login文件夹,创建index.vue:代表登录的组件 配置router.js,导入登录组件 import Vue from "vue"; import ...

  2. [PHP] - Laravel - 用户登陆中间件

    前言 Laravel 4中,可以使用Route::filter,而在Laravel 5中,没有了filter.php文件,官方建议使用中间件做. 下面是用户登陆的测试例子,涉及到的一些方法和使用,先参 ...

  3. 用户登陆,退出等基本Action

    用户登陆页面user_login.jsp对应action为login.do: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti ...

  4. [PHP]用户登陆中间件

    Laravel 4中,可以使用Route::filter,而在Laravel 5中,没有了filter.php文件,官方建议使用中间件做. 下面是用户登陆的测试例子,涉及到的一些方法和使用,先参见这里 ...

  5. mxonline实战3,编写首页及用户登录页面1

          对应github地址:首页和用户登陆1     一. 显示首页   1. 修改mxonline/setttings.py 在TEMPLATES代码块修改DIRS为 'DIRS': [os. ...

  6. Centos系统创建用户oracle后,用该用户登陆系统,页面加载报错GConf error

    Linux 的 GConf error 解决办法 问题: Centos系统创建用户oracle后,用该用户登陆系统,页面加载报错,导致重新进入Centos系统后出现: GConf error:Fail ...

  7. Django用户登陆以及跳转后台管理页面3

    Django用户登陆以及跳转后台管理页面1http://www.cnblogs.com/ujq3/p/7891774.html Django用户登陆以及跳转后台管理页面2http://www.cnbl ...

  8. Django用户登陆以及跳转后台管理页面2

    请先写好以下,再来替换文件 Django用户登陆以及跳转后台管理页面1http://www.cnblogs.com/ujq3/p/7891774.html from django.shortcuts ...

  9. FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发

    接上一篇文章FastAPI(六十六)实战开发<在线课程学习系统>接口开发--用户注册接口开发.这次我们分享实际开发--用户登陆接口开发. 我们先来梳理下逻辑 1.查询用户是否存在2.校验密 ...

随机推荐

  1. Five reasons phosphorene may be a new wonder material

    A material that you may never have heard of could be paving the way for a new electronic revolution. ...

  2. oracle中如何修改process

    转自https://blog.csdn.net/qq_35686181/article/details/52350922 oracle中修改process  在 oracle中,要经常查看proces ...

  3. Country Meow

    Country Meow 和这基本一样 https://www.cnblogs.com/Fighting-sh/p/9809518.html #include<iostream> #inc ...

  4. centos7 ntp服务器配置

    一.ntp服务是什么 1. 定义 NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议. 2. 发展 首次记载在Internet Enginee ...

  5. 通过curl模拟多线程抓取网页(curl_multi_*)

    curl请求多个url,以前都是使用循环来处理.最近发现可以通过curl_multi_*系列函数来模拟多线程.比对一下,发现如果请求的url只有几个,2种方案耗时差不多,但是url比较多,差距就非常明 ...

  6. 安装系统重启的时候出现了error:file '/boot/grub/i386-pc/normal.mod' not found

    1.直接进入系统的时候只出现grub rescue的命令行 可以使用的命令有set和 ls 在用ls命令查看 磁盘的分区情况其中hd0 代表第一块硬盘 hd1代表第二块 使用ls 来查看存在那些系统, ...

  7. 不要怂,就是GAN (生成式对抗网络) (二):数据读取和操作

    前面我们了解了 GAN 的原理,下面我们就来用 TensorFlow 搭建 GAN(严格说来是 DCGAN,如无特别说明,本系列文章所说的 GAN 均指 DCGAN),如前面所说,GAN 分为有约束条 ...

  8. 如何用Python实现常见机器学习算法-2

    二.逻辑回归 1.代价函数 可以将上式综合起来为: 其中: 为什么不用线性回归的代价函数表示呢?因为线性回归的代价函数可能是非凸的,对于分类问题,使用梯度下降很难得到最小值,上面的代价函数是凸函数的图 ...

  9. 给力分享新的ORM => Dapper( 转)

    出处:http://www.cnblogs.com/sunjie9606/archive/2011/09/16/2178897.html 最近一直很痛苦,想选一个好点的ORM来做项目,实在没遇到好的. ...

  10. HDU 2044 一只小蜜蜂...(递推,Fibonacci)

    题意:中文题. 析:首先要想到达第 n 个蜂房,那么必须经 第 n-1 或第 n-2 个蜂房,那么从第 n-1 或第 n-2 个蜂房到达第 n 个,都各自有一条路线, 所以答案就是第 n-1 + 第 ...