在这个文件中,有一个 register() 方法,它可以注册自定义的异常报告程序和渲染回调,默认情况下,也会将异常信息写到日志中。...定义了一个用于捕获 ErrorException 的处理方法,在这个回调函数内部将日志写入到上节课中定义的 custom 日志配置中。...然后再次运行路由进行测试,你会发现日志被记录到了 storage/logs/zyblog.log 文件中,而 laravel.log 文件中没有记录。...比如说在这里我通过判断请求是否是 ajax 请求来返回不同的响应的内容,如果是 ajax 请求,那么就返回 json 格式的错误信息。如果不是的话,就返回一个我自己定义的错误页面。...abort(404, '没有找到页面哦'); 在测试的时候我们要把上面在 register() 中写的 renderable() 给注释掉,因为我们捕获了全局的 Exception 并进行响应返回,如果不注释掉就会以我们自定义的
换行符不能省略 响应体(交给给浏览器展示给用户看的数据) 响应状态码 HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。...server.serve_forever() # 启动服务端 封装优化处理 封装的过程中主要解决: 网址的匹配问题 网址多匹配如何解决 功能复杂代码块如何解决,放在一个文件结构不清晰...路由与视图函数的对应关系 views.py主要存视图函数 templates 文件夹主要存HTML文件 拆分功能后只需在urls.py中书写对应关系,views.py中书写后端的业务逻辑即可 '''...~ 自写框架梳理 wsgiref模块: 封装了socket代码 处理了http数据格式 根据功能的不同拆分成不同的文件夹 urls.py 路由与视图函数对应关系 views.py 视图函数 templates...模板文件夹 步骤: 第一步添加路由与视图函数的对应关系 去views中书写功能代码 如果需要使用到html则去模板文件夹中操作 jinjia2模板语法 {{}} {%%}
原因很简单,上家公司来了个网易的测开,就是用 Django 开发的测试平台。 这位测开没多久就离职去腾讯了,我啥也没学到,看了他的代码,很多是写的 Vue 代码,哭啊。...数据操作 接着就可以在程序中写代码操作数据了。...设计 URLs 我们是通过 URL 发送请求的,服务端程序做处理,处理的函数叫做回调函数。Django 在 urls.py 文件中编写 URL 和回调函数的映射关系。...匹配到第一个后就会停止查找,调用回调函数。如果找完了都没有,就会调用 404 这个特殊 view,表示没找到。 编写 views 在 views 中编写回调函数。...每个回调函数只做 1 件事,要么返回包含响应的 HttpResponse 对象,要么抛出异常,如 Http404 。
当setTimeout被解析时,它被压入函数调用栈的栈顶,它设置一个定时器,然后就从栈顶弹出,把你的回调函数塞到事件循环的后面——那意味着这个回调函数不会精确地在定义的时间间隔后执行——在事件队列中等待的其他事件需要被优先处理...当时机到来,你的回调函数被压入函数调用栈的栈顶,然后执行。你发向服务器的请求,也是同样的原理——你定义一个回调函数,当收到响应后,它被塞进事件循环队列的后面。...想创建一个Worker,你需要向Worker构造函数传入一个文件名,在该文件中包含了需要执行的JavaScript脚本。...剩下唯一要做的事情就是创建factorial.workder.js文件。 它需要返回当前计算的数字的阶乘,还要定义计算阶乘的函数本身。 在Worker中,有一个self属性。...它可能会给你一个404 Not Found错误,因为它不知道你想以WebWorker的形式加载文件。你需要额外的加载器(loader)来加载类似的文件。让我带你看看这个过程。
语法 url()对象,被定义在django.conf.urls包中,有两种语法结构: 语法一:包含,一般在自定义应用中创建一个urls.py来定义url。...url(正则,include('应用.urls')) 语法二:定义,指定URL和视图函数的对应关系。 在应用内部创建urls.py文件,指定请求地址与视图的对应关系。...上去 二、视图 视图就是python中的函数,视图一般被定义在"应用/views.py"文件中,此例中为"booktest/views.py"文件。...ajax代码执行过程如下: 1.发起请求。 2.服务器端视图函数执行。 3.执行回调函数。 ?...重定向简写函数redirect 在django.shortcuts模块中为重定向类提供了简写函数redirect。 1)修改booktest/views.py文件中red1视图,代码如下: ? ?
大家好,又见面了,我是你们的朋友全栈君。 路由系统 路由系统概念 简而言之,路由系统就是路径和视图函数的一个对应关系。...Django拿着用户请求的url地址,在urls.py文件中对urlpatterns列表中的每一项条目从头开始进行逐一对比, 一旦遇到匹配项,立即执行该条目映射的视图函数或二级路由,其后的条目将不再继续匹配...如果你想深入研究正则表达式,可以读一些相关的书籍或专论,但是在Django的实践中,你不需要多高深的正则表达式知识。...下的views.py面定义处理数据的函数 2、在urls.py里导入views 3、在urlpatterns里写入一条url与处理函数的l映射关系 4、url映射一般是一条正则表达式,“^” 字符串的开始...在模板文件的HTML文件中: 点击查看所有学生信息 Django框架充分考虑了这种需求,所以提供了工具来反向解析(推导)出具体的URL。
宏观上只要记住异步javascript就是不影响当前页面动作的一段javascript代码,这段代码会立flag,并且有一一个回调函数会在将来某个时刻执行。...AJAX实现原理 本质是浏览器底层与操作系统暴露出来的一个API,在浏览器中有一个XMLHttpRequest的构造函数,当我们用一些包如jQuery的ajax或者Axiso请求数据时,用的其实就是它的实例...XMLHttpRequest是浏览器提供了事件通知机制引擎是所暴露出来的API,当发起请求立flag的时候,就是告诉底层,我订阅了这个消息,你要在请求回来的时候通知我,它会暴露出一些钩子给你,你便可以传相应的处理函数进去...,等它触发事件,钩子函数得到执行,你传入的回调也得到执行。...在上面搜了一个不存在的掘金文章编号,返回值404了。
settings.py: 这是一个配置文件,里面有关于语言、时区、安装的app声明等等信息; urls.py: 这个文件里指明了在访问一个页面时要调用的视图啊等的映射,确保在访问时可以正确定位到你要实现的功能...我们在这个文件定义一个函数index()来实现我们的要求,具体如下: from django.http import HttpResponse def index(request): return...,在Django 1.10以前的版本中是使用的pattern,但是在Django1.10版本以后,就去掉了pattern,换成了url,这里需要注意,这里使用的是1.11的版本,所以用的是url; 第二是...第三是url(r’^index/’, views.index)这里接受两个参数,一个是用 正则表达式表示的键值,这个可以任意起名,只要在访问网页时用它就行了;第二个参数是我们要实现的那个视图函数。.../admin,则会出现如下的验证信息: ---- 问题 在修改urls.py文件时,有个问题困扰我好一会儿。
如果使用这种方式构造一个漂亮丰富的页面,对于开发人员真是会发疯,于是就有了下面的方式: 调用模板 可以将html、css、js定义到一个html文件中,然后由视图来调用。...调用模板简写函数render 每次调用模板时都要执行加载、上下文、渲染三个步骤,为了简化操作,Django定义了render()函数封装了以上三个步骤的代码,定义在django.shortcuts模块中...好了,到这里就可以点击json1页面中的按钮,通过ajax获取json2的json返回数据了。 如下: ? ajax代码执行过程如下: 1.发起请求。 2.服务器端视图函数执行。...3.执行回调函数。...重定向简写函数redirect 在django.shortcuts模块中为重定向类提供了简写函数redirect。
快捷方式: get_object_or_404() 这很常见,当你使用 get() 获取对象时 对象却不存在时就会抛出 Http404 异常。对此 Django 提供了一个快捷操作。...Python 包格式字符串 – 和标准 URLconf 中的回调函数格式是一样的。...编写一个 500 ( 服务器错误 ) 视图 类似的,你可以在 root URLconf 中定义 handler500 变量,在服务器发生错误时 调用它指向的视图。...不过,既然你在 polls.urls 模块中的 url() 函数中定义了 命名参数,那么就可以在 url 配置中使用 {% url %} 模板标记来移除特定的 URL 路径依赖: 在 mysite/urls.py 文件 (项目的 urls.py,不是应用的) 中,修改为包含命名空间的定义: from django.conf.urls import patterns, include
下面就是详情展示阶段,我们先配置好详情页的路由信息,在video/urls.py中追加detail的路由信息。...这个时候get_object()派上用场了。因为每次调用DetailView的时候,django都会回调get_object()这个函数。...由于ajax代码量较大,我们封装到一个单独的js文件中 ==> static/js/detail.js 在detail.js中,我们先实现喜欢的ajax调用: $(function () {...在success回调中,通过判断user_liked的值来确定自己是否喜欢过,然后改变模板中相应的css。 推荐功能 每个网站都有自己的推荐功能,且都有自己的推荐逻辑。...有了模型之后,我们就可以专心写业务代码了,首先在comment下建立路由文件urls.py。
然后自己就反复试验了多次,又仔细看了文档中的描述(我的蹩脚英语不足以支撑看原版英文文档,看的英译汉,所以翻译后有些字眼确实不好理解,没内个味道了...)...OK,闲话到此为止,继续往下看 首先,我的django项目层级如下 mysite/urls.py 是根 URLconf 文件 polls/urls.py 是一个应用下的 URLconf 文件 在 polls...访问url,结果如下,确实映射到了视图函数index2()对应的内容 第三种情况 一个django项目下可以有多个应用(app),上面的示例中只有一个应用polls 接下来再在这个项目新建一个应用...,名称为blog 然后在blog下新建一个urls.py文件 在 blog/views.py文件中添加一个视图 from django.shortcuts import render from django.http...文件中继续匹配 index/ 如果匹配成功,则映射到 blog/views.py 下定义的index视图 访问结果如下 如果修改 blog/urls.py 文件,把path中的 index/
app里面新建一个static文件夹,将静态文件放到里面,在加载静态文件时,比如要在模板中用到静态文件,django会自动在每个app里面搜索static文件夹,此时不需要 前后端开发模式: 上面在settings.py...就像上面说的,我选择的是前后端分离的开发模式,所以下面我以查看用户信息的接口为例 注册一个路由 在urls.py中 以下操作都在urls.py文件中,加入视图函数路径 参数1:匹配规则 :正则表达式 参数...2:视图函数:对应的是views中的一个函数,没有括号(这里不是调用) from APP import views #APP是自定义的一个应用 #在urlpatterns中加入路径 path('...,实现了数据的增删改查 注意:一切的改变都要基于 1. urls.py 中添加端口 2. views.py 中自定义对应函数 简单来说,要将数据存储, 1.要在models.py里定义数据库模型 from...总结 看似好像速通了一遍Django,其实我就是自己学的时候回顾了一遍,用到具体的还是得各种CSDN [doge] 说到这里,项目后端就基本完成了,下一篇我简单说说前后端对接,因为我也不太会,只是之前遇到了一些问题
自定义 URL 对应的视图 在 views.py 中增加 URL 的过滤和响应事件 在 views.py 中增加过滤 from django.http import HttpResponse def...,所有的网络请求,都会进入此方法进行匹配 【说明】r'^' 这个是正则表达式 注册 urls.py 文件 在前两步只是定义了方法和声明这个方法为 url 的过滤方法之一,但是我们的定义和声明都在 views.py...、 urls.py 文件中放置,程序并不会执行到这个地方,我们需要告诉程序 在 工程的 urls.py 文件中配置 ?...P) 定义了一个名字,它将用于标识匹配的模式 [0-9]是标识至少存在一个数字 模板 将模板放置在 templates 的 polls 目录下面。...因为 通过 polls 相当于是创建了命名空间 在 views.py 中,不同的 path 返回不同的模板 views.py 文件就是一个中间者 mvc 中的 c。模板就是 v。
我的博客在导航栏中有一个在线工具跳转,博客中提供了一些比较实用的在线工具,最近两天又添加了一个在线工具,作用是可以查询 docker 官方镜像仓库中指定镜像的版本信息,虽然之前写在线工具的时候就已经掌握了...首先,在使用 ajax 之前需要说一下这个前端库的定义,以下描述是我觉得比较简单明了的解释(本文提到的 ajax 仅指 jQuery AJAX): AJAX 是一种与服务器交换数据的技术,可以在不重新载入整个页面的情况下更新网页的一部分...有了这个基本关系理解,我们再来把两者结合的过程分解到代码中,我每次写在线工具的思路大致如下: 在 html 中写好表单以及调用到 ajax 请求的动作,比如按钮点击 既然要引用 ajax 发请求,那么可以把...ajax 的请求过程以及请求前后要做的事件都写到函数中,然后单独放到 js 文件中 ajax 发请求的本质就是调用 django 的接口,所以 django 的 URL 中需要提供接口 django...,这里我比较喜欢在 js 文件中写 JavaScript 而不是直接写在 html 中,这样显得比较整洁,也容易统一管理。
当它匹配到了^polls/,就剥离出url中匹配的文本polls/,然后将剩下的文本“34/”,传递给“polls.urls”进行下一步的处理。在polls.urls,又匹配到了r’^(?...编写拥有实际功能的视图 每个视图函数只负责处理两件事中的一件:返回一个包含所请求页面内容的HttpResponse对象,或抛出一个诸如Http404异常。该如何去做这两件事,就看你自己的想法了。...在刚刚创建的templates目录中,创建另一个名为polls的目录,并在其中创建一个名为index.html的文件。...但是,因为你在polls.urls模块的url()函数中定义了name 参数,所以你可以通过使用{% url %}模板标签来移除对你的URL配置中定义的特定的URL的依赖: 在mysite/urls.py文件中,添加命名空间将它修改成: # mysite/urls.py from django.conf.urls import include, url from django.contrib
Django 将会选择第一个匹配的模板文件,如果你有一个模板文件正好和另一个应用中的某个模板文件重名,Django 没有办法 区分 它们。...于是 Django 提供了一个快捷函数,我们用它来重写index()视图: from django.shortcuts import render from .models import Question...为了测这段代码,我们在polls/templates/polls/detail.html中写入: {{ question }} 一个快捷函数: get_object_or_404() 尝试用 get...我们在polls.urls的url()函数中通过name参数为URL定义了名字,你可以使用 {% url %} 标签代替硬编码URL: 在polls/urls.py文件中稍作修改,加上app_name设置命名空间 from django.urls import path from . import views app_name =
一、概述 作用 接收web请求并返回web响应 本质 就是python函数 请求 客户端给服务端的信息 响应 服务端给客户端的信息,可以是一个网页、一个重定向、一个404错误...' 2、path()函数与re_path()函数 概述 在新版本Django2.x中,url的路由表示用path和re_path代替,模块的导入由django1.x版本的from django.conf.urls...当Django响应一个请求时,它会从urlpatterns的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项 view:当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个...HttpRequest对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入 name:为你的URL取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。...urls.py的文件作为子路由 目录结构 project/ App/ urls.py # 自定义urls.py文件 project
比如指定一个DOM元素作为context参数,这样就设置了success回调函数的上下文为这个DOM元素。...在1.4中,JSON就会生成一个JavaScript对象,而script则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。...除非设置了"cache"参数。’’‘注意:’’'在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。...如果isLocal设置需要修改,建议在$.ajaxSetup()方法中这样做一次。 jsonp type:String 在一个jsonp请求中重写回调函数的名字。...xhrFields type:map 一对“文件名-文件值”在本机设置XHR对象。例如,如果需要的话,你可以用它来设置withCredentials为true的跨域请求。
如果你正在使用一个较老版本的 Python,在 我应该使用哪个版本的 Python 来配合 Django? 查找一个合适的 Django 版本。...如果命令失败了,查看 运行``django-admin``时遇到的问题,可能能给你提供帮助。 注解 你得避免使用 Python 或 Django 的内部保留字来命名你的项目。...里面一层的 mysite/ 目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。...path() 参数: view 当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。...path() 参数: name 为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。