一. 基于类来定义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. python之time&datetime

    [time] secs:统一值,无local.UTC之分. struct_time:有local.UTC之分. time.time():返回secs,secs为统一值,无local&utc之分 ...

  2. thrift框架

    thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl ...

  3. java高级工程师(三)

    一.独白 之前也面试别人,现在轮到自己找工作,怎么说呢,每个面试官的看法不一样,面试的方式就不一样,比如我面试别人我喜欢问项目中他用到了那些,然后针对用到的技术去问一些问题,或者说对于某些场景的一些技 ...

  4. What's App has the Qt?

    收集了我看到的使用Qt开发的应用程序或者含有Qt库的应用程序 CNTV CNTV, 一个中央电视台的视频直播软件, 从下面卸载后的残余目录树,可以看到,存在部分库使用的就是Qt的.下面的目录树,已经删 ...

  5. win10系统的快捷键

    1.win10特有的快捷键:任务视图和虚拟桌面相关 (1)Win + Tab:查看任务视图 (2)Win + Ctrl + D:在任务视图中新建虚拟桌面 (3)Win + Ctrl + F4:关闭当前 ...

  6. [Selenium]对于某些对话框即有可能弹出来,也有可能不弹出来,这种应该怎么处理呢?

    界面上如果有一个对话框可能弹出来,也可能不弹出,我们都要认为是正常,应该怎么处理呢? /** * check if release notes dialog present * @author j * ...

  7. Java 设计模式系列(二二)责任链模式

    Java 设计模式系列(二二)责任链模式 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求 ...

  8. iPhone X 的“刘海”正是苹果的品牌象征

    以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 在iPhone X发布活动结束之后,关于其在屏幕顶端独特的“刘海”设计,引起了不少人的讨论.其实,这 ...

  9. scrollView不能进行滚动

    原因:scrollView里只能包含一个layout,多个时,是不能进行滚动的.

  10. 重拾C语言基础知识

    从实习到工作两年多的时间了,虽然感觉学到了很多知识,但是事实上却将立足之本的基础知识给忘了个精光.也许跟自己没有出去找工作有关,没有好好的将C语言的基础牢牢掌握. 从现在开始吧!好好的重温基础,做一名 ...