随笔分类 -  Django

摘要:什么是Django中间件 中间件(Middleware)是一个用来处理Django的请求(Request)和响应(Response)的框架级别的钩子,它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。 当用户在网站中进行某个操作时,这个过程是用户向网站发送HTTP请求(R 阅读全文
posted @ 2021-05-28 11:10 Silent丿丶黑羽 阅读(296) 评论(0) 推荐(0)
摘要:Django请求生命周期分析 1.客户端发送请求 在浏览器输入url地址,例如www.baidu.com,浏览器会自动补全协议(http),变为http://www.baidu.com,现在部分网站都实现了HSTS机制,服务器自动从http协议重定向到https协议 在网页中点击超链接或javasc 阅读全文
posted @ 2021-05-27 11:19 Silent丿丶黑羽 阅读(688) 评论(0) 推荐(0)
摘要:前言 session: session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,session是一个思路、一个概念、一个服务器存储授权信息的解决方案,不同的服务器,不同的框架,不同的语言有不同的实现。虽然实现不一样,但是他们的目的都是服务器为 阅读全文
posted @ 2021-05-26 10:46 Silent丿丶黑羽 阅读(1505) 评论(0) 推荐(0)
摘要:前言 cookie:在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就 阅读全文
posted @ 2021-05-25 11:37 Silent丿丶黑羽 阅读(457) 评论(0) 推荐(1)
摘要:前言 虽然DTL给我们内置了许多好用的过滤器。但是有些时候还是不能满足我们的需求。因此Django给我们提供了一个接口,可以让我们自定义过滤器,实现自己的需求。 自定义过滤器 首先在某个app中,创建一个python包,叫做templatetags,注意,这个包的名字必须为templatetags, 阅读全文
posted @ 2021-05-25 09:13 Silent丿丶黑羽 阅读(161) 评论(0) 推荐(0)
摘要:模版常用过滤器 在模版中,有时候需要对一些数据进行处理以后才能使用。一般在Python中我们是通过函数的形式来完成的。而在模版中,则是通过过滤器来实现的。过滤器使用的是|来使用。 add 将传进来的参数添加到原来的值上面。这个过滤器会尝试将值和参数转换成整形然后进行相加。如果转换成整形过程中失败了, 阅读全文
posted @ 2021-05-24 11:47 Silent丿丶黑羽 阅读(304) 评论(0) 推荐(1)
摘要:常用的模板标签 if标签 if标签相当于Python中的if语句,有elif和else相对应,但是所有的标签都需要用标签符号({%%})进行包裹。if标签中可以使用==、!=、<、<=、>、>=、in、not in、is、is not等判断运算符。示例代码如下: {% if "张三" in pers 阅读全文
posted @ 2021-05-24 10:33 Silent丿丶黑羽 阅读(185) 评论(0) 推荐(0)
摘要:变量 模板中可以包含变量,Django在渲染模板的时候,可以传递变量对应的值过去进行替换。变量的命名规范和Python非常类似,只能是阿拉伯数字和英文字符以及下划线的组合,不能出现标点符号等特殊字符。变量需要通过视图函数渲染,视图函数在使用render或者render_to_string的时候可以传 阅读全文
posted @ 2021-05-23 16:16 Silent丿丶黑羽 阅读(123) 评论(0) 推荐(0)
摘要:前言 目前市面上有非常多的模板系统,其中最知名最好用的就是DTL和Jinja2。DTL是Django Template Language三个单词的缩写,也就是Django自带的模板语言。当然也可以配置Django支持Jinja2等其他模板引擎,但是作为Django内置的模板语言,和Django可以达 阅读全文
posted @ 2021-05-23 13:45 Silent丿丶黑羽 阅读(135) 评论(0) 推荐(0)
摘要:类视图 在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图。使用类视图可以使用类的一些特性,比如继承等。 View django.views.generic.base.View是主要的类视图,所有的类视图都是继承自他。如果我们写自己的类视图,也可以继承自他。然后再根据当前请求的m 阅读全文
posted @ 2021-05-23 09:16 Silent丿丶黑羽 阅读(189) 评论(0) 推荐(0)
摘要:HttpResponse对象 Django服务器接收到客户端发送过来的请求后,会将提交上来的这些数据封装成一个HttpRequest对象传给视图函数。那么视图函数在处理完相关的逻辑后,也需要返回一个响应给浏览器。而这个响应,我们必须返回HttpResponseBase或者他的子类的对象。而HttpR 阅读全文
posted @ 2021-05-21 16:45 Silent丿丶黑羽 阅读(371) 评论(0) 推荐(0)
摘要:Django在接收到http请求之后,会根据http请求携带的参数以及报文信息创建一个WSGIRequest对象,并且作为视图函数第一个参数传给视图函数。也就是我们经常看到的request参数。在这个对象上我们可以找到客户端上传上来的所有信息。这个对象的完整路径是django.core.handle 阅读全文
posted @ 2021-05-21 13:47 Silent丿丶黑羽 阅读(201) 评论(0) 推荐(0)
摘要:重定向 重定向分为永久重定向和临时重定向,在页面上体现的操作就是浏览器会从一个页面自动跳转到另外一个页面。比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此我们应该给他重定向到登录页面。 永久重定向:http的状态码是301,多用于旧网址被废弃了要转到一个新的网址确保用户的访问,最经典 阅读全文
posted @ 2021-05-21 11:09 Silent丿丶黑羽 阅读(2691) 评论(2) 推荐(1)
摘要:前言 有时候,我们想要限制访问的请求方法,比如我们希望用户只能通过get方式请求,post不允许,那么我们可以采用装饰器的方式,django已经为我们提供了内置的装饰器 限制请求装饰器 Django内置的视图装饰器可以给视图提供一些限制。比如这个视图只能通过GET的method访问等。 django 阅读全文
posted @ 2021-05-21 10:24 Silent丿丶黑羽 阅读(295) 评论(0) 推荐(0)
摘要:前言 Django在查询数据时,大多数查询都能使用ORM提供的API方法,但对于一些复杂的查询可能难以使用ORM的API方法实现,因此Django引入了SQL语句的执行方法,有以下三种执行方式 extra:结果集修改器,一种提供额外查询参数的机制。 raw:执行原始SQL并返回模型实例对象。 exe 阅读全文
posted @ 2021-05-20 15:10 Silent丿丶黑羽 阅读(518) 评论(0) 推荐(1)
摘要:前言 在讲解如何解决migrate报错原因前,我们先要了解migrate做了什么事情,migrate:将新生成的迁移脚本。映射到数据库中。创建新的表或者修改表的结构。 问题1:migrate怎么判断哪些迁移脚本需要执行? 它会将代码中的迁移脚本和数据库中django_migrations中的迁移脚本 阅读全文
posted @ 2021-05-20 12:40 Silent丿丶黑羽 阅读(926) 评论(0) 推荐(1)
摘要:迁移命令 makemigrations:将模型生成迁移脚本。模型所在的app,必须放在settings.py中的INSTALLED_APPS中。这个命令有以下几个常用选项: app_label:后面可以跟一个或者多个app,那么就只会针对这几个app生成迁移脚本。如果没有任何的app_label,那 阅读全文
posted @ 2021-05-20 09:46 Silent丿丶黑羽 阅读(190) 评论(0) 推荐(0)
摘要:前言 我们通常做查询操作的时候,都是通过模型名字.objects的方式进行操作。其实模型名字.objects是一个django.db.models.manager.Manager对象,而Manager这个类是一个“空壳”的类,他本身是没有任何的属性和方法的。他的方法全部都是通过Python动态添加的 阅读全文
posted @ 2021-05-19 21:29 Silent丿丶黑羽 阅读(284) 评论(0) 推荐(0)
摘要:前言 orm模型中的聚合函数跟MySQL中的聚合函数作用是一致的,也有像Sum、Avg、Count、Max、Min,接下来我们逐个介绍 聚合函数 所有的聚合函数都是放在django.db.models下面。并且聚合函数不能够单独的执行,聚合函数是通过aggregate方法来实现的。在说明聚合函数的用 阅读全文
posted @ 2021-05-19 10:43 Silent丿丶黑羽 阅读(450) 评论(0) 推荐(1)
摘要:前言 查找是数据库操作中一个非常重要的技术。查询一般就是使用filter、exclude以及get三个方法来实现。我们可以在调用这些方法的时候传递不同的参数来实现查询需求。在ORM层面,这些查询条件都是使用field+__+condition的方式来使用的。以下将那些常用的查询条件来一一解释。 查询 阅读全文
posted @ 2021-05-18 13:49 Silent丿丶黑羽 阅读(636) 评论(0) 推荐(0)