一. 基于类来定义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. Python3 hex() 函数

    Python3 hex() 函数  Python3 内置函数 描述 hex() 函数用于将一个指定数字转换为 16 进制数. 语法 hex 语法: hex(x) 参数说明: x -- 一个整数 返回值 ...

  2. 59. Spiral Matrix II (Array)

    Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...

  3. input和React-Native的TextInput的输入限制,只能输入两位小数(阻止0开头的输入),类似价格限制

    一.背景: 想要实现一功能: 1. 最多只能输入两位小数,类似的价格限制 2. 实时监听限制输入,禁止输入不符合规范的字符(当输入违禁字符,进行删除操作) 这样做的优点: 1. 在用户输入时直接进行限 ...

  4. ThinkCMF 增加 区域(省、市、区)管理模块

    区域管理模块是系统最常使用的一个模块. 可以直接在系统后台管理,前.后台调用. 调用方式: 区域模块使用说明: 1.将目录下的sp_region.sql导入数据库(如果数据库表前缀不是“sp_”,修改 ...

  5. Laravel Carbon 简明使用

    快速切換前後日期 <?php use Carbon\Carbon; $now = Carbon::now(); echo $now; // 2015-03-26 00:36:47 $today ...

  6. HBase 系列(三)HBase Shell

    HBase 系列(三)HBase Shell ./hbase shell # 进入 hbase 命令行 (1) HBase 命令帮助 help # 查看 HBase 所有的命令 create # 或 ...

  7. Linux中bash编程

    bash编程也叫shell编程 预定义变量         $? 最后一次执行的命令的返回状态.如果这个变量的值为0,证明上一个命令正确的执行:如果这个变量返回的值非0(具体是那个数,有命令自己来决定 ...

  8. 怎样application不被第三方应用杀掉--Android

    方法: 对于放在/system/app下的应用,需要在其Manifest.xml文件中设置persistent属性,如应用程序'Phone'的AndroidManifest.xml文件: <ap ...

  9. win10下安装centos7双系统

    国庆最后一天了,闲来无事装个双系统,用虚拟机的linux总有些不方便. window下安装linux双系统有两中方法: 1.U盘安装 (我采用的方法,后面详述) 2.EasyBCD工具安装 (使用Ea ...

  10. [label][IDE] Develop Node.js Project With WebStorm

    WebStorm 是一个支持 Node.js,CoffeeScript, TypeScript, Dart, Jade, Sass, LESS and Stylus 这些最新 web 开发技术的集成开 ...