DJANGO入门系列之(Django请求生命周期and路由层)

昨日回顾   1 orm 创建表,新增字段,修改,删除字段,不能创建数据库      -字段属性phone=models.CharField(max_length=64,null=True)      -null=True 代表该列可以为空   2 数据的增删改查      -增(1):User.objects.create(address=‘‘)      -增(2):实例化产生一个user对象,user对象的save方法      -删:User.objects.filter(id=1,name=‘lqz‘).first().delete()      -删:User.objects.filter(id=1,name=‘lqz‘).delete()      -改:User.objects.filter(id=1,name=‘lqz‘).update()      -查:User.objects.all()          user=User.objects.filter(name=‘lqz‘)         user.name   3 前后台交互      -id=1&name=‘lqz‘&      <form action="/updateuser/?id={{ user.id }}" method="post">         <p><input type="hidden" name="id" value="{{ user.id }}"></p>         <p>用户名: <input type="text" name="name" value="{{ user.name }}"></p>         <p>密码: <input type="text" name="password" value="{{ user.password }}"></p>         <p>地址: <input type="text" name="addr" value="{{ user.address }}"></p>         <input type="submit" value="提交">      </form>   4 django生命周期         5 一对多,多对多      -publish_id      -publish=models.ForeignKey(to=‘Publish‘, to_field=‘id‘)      book.publish_id      book.publish      多对多:(自动创建第三张表)      authors = models.ManyToManyField(to=‘Author‘)

今日内容:(路由层)   1 简单配置      -第一个参数是正则表达式(如果要精准匹配:‘^publish/$‘)      -第二个参数是视图函数(不要加括号)      -url(r‘^admin/‘, admin.site.urls),   2 无名分组      -按位置传参      -分组之后,会把分组出来的数据,当位置参数,传到视图函数,所以,视图函数需要定义形参      -url(r‘^publish/([0-9]{4})/([0-9]{2})$‘, views.publish),      -def publish(request,*args):   视图函数可以这样接收   3 有名分组      -按关键字传参      -有名分组之后,会把分组出来的数据,当关键字参数,传到视图函数,所以,视图函数需要定义形参,形参名字要跟分组的名字对应,与顺序无关      -url(r‘^publish/(?P<year>[0-9]{4})/(?P<mounth>[0-9]{2})/$‘, views.publish),      -def publish(request, mounth,year):      *****有名分组和无名分组,不要混用   4 反向解析      -先命一个名:         -1 无参数:url(r‘^publishadd133/$‘, views.publishadd,name=‘ddd‘),         -2 无名分组:url(r‘^publishadd/([0-9]{4})/([0-9]{2})/$‘, views.publishadd,name=‘ddd‘),         -3 有名分组:url(r‘^publishadd/(?P<year>[0-9]{4})/(?P<mounth>[0-9]{2})/$‘, views.publishadd,name=‘ddd‘),      -在模板层:         -1 无参数:{% url ‘ddd‘ %}         -2 无名分组的:{% url ‘ddd‘ 2018 12 %}         -3 有名分组:{% url ‘ddd‘ 2018 12 %}  还可以 {% url ‘ddd‘ year=2018 mounth=12 %}

-在视图层:         from django.shortcuts import reverse         在视图函数里:         1 无参数:url=reverse(‘ddd‘)         1 无名分组:url=reverse(‘ddd‘,args=(2018,12,))         1 有名分组:url=reverse(‘ddd‘,args=(2018,12,)) 还可以 url=reverse(‘ddd‘,kwargs={‘year‘:2018,‘mounth‘:12})   5 路由分发       1 在不同的app里创建urls.py      2 在总路由          -from django.conf.urls import include          -url(r‘^blog/‘,include(‘blog.urls‘)),         -url(r‘^app01/‘,include(‘app01.urls‘)),      3 在不同的app的urls里配置路由关系        ***重点***总路由,不能加结束符$   6 名称空间      -url(r‘^blog/‘,include(‘blog.urls‘,namespace=‘blog‘)),      -子路由:url(r‘^publish/$‘, views.publish,name=‘test‘),      -反向解析:         -视图层:url = reverse(‘blog:test‘)         -模板层:{% url ‘app01:test‘%}      ***一般不要用***         子路由:url(r‘^publish/$‘, views.publish,name=‘app01_test‘),

7 伪静态      -路由:url(r‘^book/(?P<id>\d+.html)‘,views.book),      -访问:http://127.0.0.1:8000/book/4.html

作业:   1 自己尝试对象有没有删除方法,更新方法   2 有时间的同学研究一下如何手动创建第三张表   3 图书管理系统,路由不用get形式传参,用有名分组,无名分组   4 http://127.0.0.1:8000/ 访问这个路径,匹配到图书列表   5 路由匹配不上,调到404的页面   6 图书管理系统,继续写

Django请求生命周期

原文地址:https://www.cnblogs.com/Maikes/p/9923836.html

时间: 2025-01-12 03:52:17

DJANGO入门系列之(Django请求生命周期and路由层)的相关文章

【微信小程序开发?系列文章六】生命周期和路由

这篇文章理论的知识比较多一些,都是个人观点,描述有失妥当的地方希望读者指出. [微信小程序开发•系列文章一]入门 [微信小程序开发•系列文章二]视图层 [微信小程序开发•系列文章三]数据层 [微信小程序开发•系列文章四]模块化 [微信小程序开发•系列文章五]主界面 [微信小程序开发•系列文章六]生命周期和路由 整个微信小程序从打开到关闭,整个过程可以分为很多阶段或者说状态,这一整段的过程,我们称之为小程序的生命周期.而周期中的每种不同的状态,到另一个状态的过度和转化,是需要一个触发机制的,这种机

Django的请求生命周期

Django的请求生命周期: 1.当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 2.服务端的wsgiref模块接收用户请求并将请求进行初次封装,然后将请求交给Django的中间件 3.通过中间件之后将请求交给url,根据浏览器发送的不同url去匹配不同的视图函数 4.视图函数根据业务逻辑调用数据库获取相应的数据,然或根据模板渲染页面 5.视图函数将响应的页面依次通过中间件反馈给客户端 原文地址:https://www.cnblogs.com/Ming-Hui/p/93481

Django请求生命周期之响应内容

Django请求生命周期: 1.发送http请求2.服务器接受,根据请求头中的url在路由关系表中进行匹配(从上到下)3.匹配成功后,执行指定的views函数 URL -> 函数 ==>FBV URL -> 类 ==>CBV4.业务处理 - 根据个人需求自定 - 操作数据库 - 原生SQL - Django ORM ==> 返回给用户的结果 <== - 响应内容 - 响应头 - 响应体 原文地址:https://www.cnblogs.com/ray-h/p/10241

Django的请求生命周期与中间件中的5中方法

请求生命周期: 客户端——>WSGI——> 中间件——>路由匹配——>视图函数——>WSGI——>客户端 中间件: 在全局层明处理请求和响应的 form django.utils. deprecation import MiddlaraMixin 5种方法与4个要点:执行顺序,执行时间,参数,返回值 方法:process_request process_views process_exception process_response process_template_r

Django请求生命周期和ORM

dajngo请求生命周期 django请求生命周期是:当用户在browser点击URL后,在django后台都发生了什么. 请求响应Http 1.发送Http请求 2.服务器接收,根据请求头中url在路由关系表中进行匹配(从上到下) 3.匹配成功后,执行指定的views函数 URL –>函数 --->FBV URL –>类     --->FBV 4.业务处理 根据个人需求自定 操作数据库 原生SQL Django ORM ---->返回给用户的结果<----- -响应

面试-Django框架请求生命周期

先看一张图吧! 1.请求生命周期 - wsgi, 他就是socket服务端,用于接收用户请求并将请求进行初次封装,然后将请求交给web框架(Flask.Django) - 中间件,帮助我们对请求进行校验或在请求对象中添加其他相关数据,例如:csrf.request.session - 路由匹配 - 视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm.templates => 渲染 - 中间件,对响应的数据进行处理. - wsgi,将响应的内容发送给浏览器. 2.什么wsgi wsgi:

Django框架进阶7 django请求生命周期流程图, django中间件, csrf跨站请求伪造, auth认证模块

django请求生命周期流程图 djang中间件 它是django的门户 只要是全局相关的功能你都应该考虑使用django中间件来帮你完成 全局用户身份校验 全局用户访问频率校验 用户访问黑名单 用户访问白名单 # 只要以后用django开发业务 设计到全局相关的功能 你就考虑用中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.Sessio

Django请求生命周期

1. Django请求生命周期的概念 用户在浏览器上输入url连接到看都页面的时间内, Django后台发生的事 2. Django请求生命周期的基本概述 1. 文字描述 第一步:浏览器发起请求 第二步:WSGI创建socket服务端,接收请求(Httprequest) 第三步:中间件处理请求 第四步:url路由,根据当前请求的URL找到视图函数 第五步:view视图,进行业务处理(ORM处理数据,从数据库取到数据返回给view视图:view视图将数据渲染到template模板:将数据返回) 第

rest_framework框架的封装特点和APIView请求生命周期

rest_framework框架的封装特点: import rest_framework from rest_framework.views import APIView from rest_framework.request import Request 在views.py中写出合适的api类,只需要继承rest_framework中generics中的某个类,重写我们需要的方法实现合适的逻辑即可 APIView请求生命周期 """ APIView的as_view(局部禁用