一、MVC,MTV架构

  models(数据库,模型) views(html模板) controllers(业务逻辑处理) --> MVC

  models(数据库,模型) templates(html模板) views(业务逻辑处理) --> MTV

  Django -> MTV

二、中间件

在settings配置文件中MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',]
在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。
在django项目的settings模块中,有一个 MIDDLEWARE_CLASSES 变量,其中每一个元素就是一个中间件自定制两个中间件类,创建md.pyfrom django.utils.deprecation import MiddlewareMixinclass M1(MiddlewareMixin):def process_request(self,request):print('m1.proccess_request')def process_view(self, request, callback, callback_args, callback_kwargs):print('m1.process_view')response = callback(request,*callback_args,**callback_kwargs)return responsedef process_exception(self, request, exception):passdef process_response(self,request,response):print('m1.process_response')return responseclass M2(MiddlewareMixin):def process_request(self,request):print('m2.process_request')def process_view(self, request, callback, callback_args, callback_kwargs):print('m2.process_view')def process_exception(self, request, exception):passdef process_response(self,request,response):print('m2.process_response')return response去settings里添加一下MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware','md.M1','md.M2',]运行结果:
m1.proccess_request
m2.process_request
m1.process_view
test
m2.process_response
m1.process_response当用户请求进来的时候,会先从MIDDLEWARE里从上往下走完proccess_request,接着再返回顶部再重新往下走process_view,遇到了process_view,就会直接跳到视图函数里执行视图函数,不再执行其他的process_view。
从视图函数返回的时候会从M2向上先执行每一个process_exception,然后再返回来M2再向上执行每一个process_response,如果process_exception有返回值Httpresponse被处理了,则不再执行其他process_exception,而是直接从M2的process_response向上执行。process_requestprocess_response(...response)必须有返回值return responseprocess_view
process_exception
process_template_view应用:对所有请求或一部分请求做批量处理

View Code

三、初识Form组件

views.py中class LoginForm(Form):username = fields.CharField(max_length=8,min_length=4,required=True,error_messages={'max_length':'用户名太长','min_length':'用户名太短','required':'用户名不能为空'})passwd = fields.CharField(max_length=12,required=True,error_messages={'max_length':'密码太长','required':'密码不能为空'})def login(request):if request.method == 'GET':return render(request,'login.html')else:obj = LoginForm(request.POST)if obj.is_valid():  # 如果验证成功print(obj.cleaned_data) # 字典类型return HttpResponse('successful done')else:print(obj.errors)  # 字典类型return render(request, 'login.html',{'obj':obj})login.html模板中<form action="login.html" method="POST">{% csrf_token %}<p><input type="text" name="username" placeholder="用户名"> {{ obj.errors.username.0 }}</p><p><input type="password" name="passwd" placeholder="密码"> {{ obj.errors.passwd.0 }}</p><input type="submit" value="提交"></form>要点:Form组件类中的字段名称要和相应的html模板文件的name属性值对应才可以检测成功 # html标签name属性 = Form类字段名
# 正确信息
obj.cleaned_data
# 所有错误信息
obj.errors

View Code

转载于:https://www.cnblogs.com/guotianbao/p/7536424.html

django上课笔记6-MVC,MTV架构-中间件-初识Form组件相关推荐

  1. Django学习笔记(二):MTV架构学习及使用步骤

    Django 是 MTV 模型,即 M 表示模型(Model):编写数据库结构,负责业务对象与数据库的映射(ORM). T 表示模板 (Template):负责如何页面(html)展示给用户. V 表 ...

  2. Django基础篇之MVC与MTV模型

    目录: MVC和MTV架构 MVC 模型 MTV 模型 MVC和MTV架构 MVC 模型 MVC 模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基 ...

  3. Django09:图书管理系统笔记/choices用法/ MTV与MVC模型/多对多三种创建方式

    图书管理系统笔记 redirect括号内可以直接写url 也可以直接写别名 但如果别名需要参数,必须使用reverse解析. choices用法 使用场景:能列举完全的数据 #使用方法:xxx_cho ...

  4. 千锋Django学习笔记

    千锋Django学习笔记 文章目录 千锋Django学习笔记 写在前面 1. MVC和MTV 2. Django简介 3. MTV简单流程 4. 和Model的简单对接 5. Model 6. Tem ...

  5. Django知识点笔记

    前言:本人十分懒的动手练习,4天二倍速看教学视频学完了Django,发现配套的教学笔记老师讲的很多干货都没有记载下来,又担心自己遗忘,于是犹豫很久还是自己敲一篇笔记加深理解巩固记忆吧. 内容可能有一点 ...

  6. B站云E办Vue+SpringBoot前后端分离项目——MVC三层架构搭建后台项目

    本项目来源B站云E办,笔记整理了项目搭建的过程和涉及的知识点.对于学习来说,不是复制粘贴代码即可,要知其然知其所以然.希望我的笔记能为大家提供思路,也欢迎各位伙伴的指正. 项目前端学习笔记目录 B站云 ...

  7. Django学习笔记(五)

    Django学习笔记(五) MVC和MTV对比 传统的MVC(Model-View-Controller) M 模型层,主要是对数据库层的封装 V 视图层,向用户展示结果 C 控制层,用于请求,获取数 ...

  8. django上课点名系统 计算机专业毕设源码03391

    摘  要 随着现在网络的快速发展,网络的应用在各行各业当中它很快融入到了许多学校的眼球之中,他们利用网络来做这个签到点名的网站,随之就产生了"上课点名系统 ",这样就让学生上课点名 ...

  9. django 学习笔记

    django 学习笔记 启动虚拟机: workon bj18_py3 创建一个项目: django-admin.py startproject mysite 启动开发用服务器:从外层项目 mysite ...

最新文章

  1. 罗格斯大学电气与计算机工程专业怎么样,美国电子工程排名 - 电子计算机工程的研究生教育,特别是偏向电路设计方向,请问是美国罗格斯大学新布朗斯维克校区好还是清华...
  2. Deployment,configuration and management Microsoft Windows Server win2003 cluster
  3. 实用计算机相关日语词汇,常用日语计算机词汇~~
  4. python 将图片转换成像素画_Canvas 实现位图转像素画
  5. VB用API实现各种对话框(总结)(转载)
  6. 作者:朱扬勇,博士,复旦大学计算机科学技术学院教授、学术委员会主任,上海市数据科学重点实验室主任。...
  7. c语言删除文件remove_「Python」 - 文件基本操作
  8. 数字万用表短路时电阻不为0怎么办
  9. “您未被授权查看该页,您不具备使用所提供的凭据查看该目录或页的权限” -- 解决办法
  10. windows c语言新建dos,dos命令怎么用_DOS下创建文件、文件夹
  11. 关于PLC控制系统中电动机过载保护方法的探究
  12. 主引导记录MBR详解
  13. 单硬盘win10+ubuntu双系统安装教程
  14. (排序5)快速排序(Hoare,选key的随机数与三数取中优化,挖坑法与前后指针法等)
  15. QQ中的相关文件功能
  16. 企业运维之 CDN 内容分发网络
  17. [散文]芒果女人(作者:毕淑敏)
  18. 游戏建模用到哪些软件?零基础如何学习游戏建模?
  19. 2020年“磐云杯”网络空间安全技能竞赛武汉拉练赛赛题及解析(超详细)
  20. 谷歌退出所引发的互联网2012

热门文章

  1. pagex,screenx,clientx的差别
  2. LNMP编译安装(centos7+nginx1.9+mysql5.6+php5.5)
  3. 如何消除选定TextBox后的光标但又不失去焦点。
  4. Stimulsoft Reports ASP.NET HTML5报表设计器
  5. 第三十九讲:tapestry 页面加载等待过程(ProgressiveDisplay)组件
  6. 安装Sql Server 2005 失败一例
  7. 用Python创建gzip压缩文件
  8. Linux 编译时查找错误字符,编译Linux内核时出现“fatal error: linux/netfilter/xt_dscp: No such file or directory”...
  9. 【C++】max_element() 和 min_element()
  10. python携程gevent_Python协程介绍以及优缺点 Greentlet和Gevent的使用