随笔分类 - Django
主要记录Django学习过程
摘要:TemplateView: django.views.generic.base.TemplateView,这个类视图是专门用来返回模版的。在这个类中,有两个属性是经常需要用到的,一个是template_name,这个属性是用来存储模版的路径,TemplateView会自动的渲染这个变量指向的模版。另
阅读全文
摘要:类视图 在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图。使用类视图可以使用类的一些特性,比如继承等。 View: django.views.generic.base.View是主要的类视图,所有的类视图都是继承自他。如果我们写自己的类视图,也可以继承自他。然后再根据当前请求的
阅读全文
摘要:生成大的CSV文件: 108是生成的一个小的csv文件,如果想要生成大型的csv文件,那么以上方式将有可能会发生超时的情况(服务器要生成一个大型csv文件,需要的时间可能会超过浏览器默认的超时时间)。这时候我们可以借助另外一个类,叫做StreamingHttpResponse对象,这个对象是将响应的
阅读全文
摘要:生成CSV文件: 有时候我们做的网站,需要将一些数据,生成有一个CSV文件给浏览器,并且是作为附件的形式下载下来。以下将讲解如何生成CSV文件。 生成小的CSV文件: 这里将用一个生成小的CSV文件为例,来把生成CSV文件的技术要点讲到位。我们用Python内置的csv模块来处理csv文件,并且使用
阅读全文
摘要:JsonResponse类: 用来对象dump成json字符串,然后返回将json字符串封装成Response对象返回给浏览器。并且他的Content-Type是application/json。示例代码如下: 默认情况下JsonResponse只能对字典进行dump,如果想要对非字典的数据进行du
阅读全文
摘要:HttpResponse对象 Django服务器接收到客户端发送过来的请求后,会将提交上来的这些数据封装成一个HttpRequest对象传给视图函数。那么视图函数在处理完相关的逻辑后,也需要返回一个响应给浏览器。而这个响应,我们必须返回HttpResponseBase或者他的子类的对象。而HttpR
阅读全文
摘要:WSGIRequest对象 Django在接收到http请求之后,会根据http请求携带的参数以及报文信息创建一个WSGIRequest对象,并且作为视图函数第一个参数传给视图函数。也就是我们经常看到的request参数。在这个对象上我们可以找到客户端上传上来的所有信息。这个对象的完整路径是djan
阅读全文
摘要:重定向 重定向分为永久性重定向和暂时性重定向,在页面上体现的操作就是浏览器会从一个页面自动跳转到另外一个页面。比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此我们应该给他重定向到登录页面。 永久性重定向:http的状态码是301,多用于旧网址被废弃了要转到一个新的网址确保用户的访问,
阅读全文
摘要:常用的请求method: GET请求:GET请求一般用来向服务器索取数据,但不会向服务器提交数据,不会对服务器的状态进行更改。比如向服务器获取某篇文章的详情。 POST请求:POST请求一般是用来向服务器提交数据,会对服务器的状态进行更改。比如提交一篇文章给服务器。 限制请求装饰器: Django内
阅读全文
摘要:ORM模型迁移迁移命令: 1、makemigrations:将模型生成迁移脚本。模型所在的app,必须放在settings.py中的INSTALLED_APPS中。这个命令有以下几个常用选项: app_label:后面可以跟一个或者多个app,那么就只会针对这几个app生成迁移脚本。如果没有任何的a
阅读全文
摘要:ORM作业准备和讲解: 数据库模型如下: 使用之前学到过的操作实现下面的查询操作: 1、查询平均成绩大于60分的同学的id和平均成绩; 2、查询所有同学的id、姓名、选课的数量、总成绩; 3、查询姓“李”的老师的个数; 4、查询没学过“李老师”课的同学的id、姓名; 5、查询学过课程id为1和2的所
阅读全文
摘要:QuerySet API详解-QuerySet转换为SQL的条件: 生成一个 QuerySet 对象并不会马上转换为 SQL 语句去执行。比如我们获取 Book 表下所有的图书: 我们可以看到在打印 connection.quries 的时候打印的是一个空的列表。说明上面的 QuerySet 并没有
阅读全文
摘要:QuerySet API详解-切片操作: 切片操作:有时候我们查找数据,有可能只需要其中的一部分。那么这时候可以使用切片操作来帮我们完成。 QuerySet 使用切片操作就跟列表使用切片操作是一样的。示例代码如下: 切片操作并不是把所有数据从数据库中提取出来再做切片操作。而是在数据库层面使用 LIM
阅读全文
摘要:QuerySet API详解-update和delete: update :执行更新操作,在 SQL 底层走的也是 update 命令。比如要将所有 图书的价格提高五元。示例代码如下: 注意这个方法走的是更新的逻辑。所以更新完成后保存到数据库中不会执行 save 方法,因此不会更新 auto_now
阅读全文
摘要:QuerySet API详解-distinct: distinct :去除掉那些重复的数据。这个方法如果底层数据库用的是 MySQL ,那么不能传递任何的参数。比如想要提取所有销售的价格超过80元的图书,并且删掉那些重复的,那么可以使用 distinct 来帮我们实现,示例代码如下: 需要注意的是,
阅读全文
摘要:QuerySet API详解-count和exists: count :获取提取的数据的个数。如果想要知道总共有多少条数据,那么建议使用 count ,而不是使用 len(articles) 这种。因为 count 在底层是使用 select count(*) 来实现的,这种方式比使用 len 函数
阅读全文
摘要:QuerySet API详解-get、create、get_or_create和bulk_create方法: create :创建一条数据,并且保存到数据库中。这个方法相当于先用指定的模型创建一个对象,然后再调用这个对象的 save 方法。示例代码如下: get_or_create :根据某个条件进
阅读全文
摘要:QuerySet API详解-defer和only: defer :在一些表中,可能存在很多的字段,但是一些字段的数据量可能是比较庞大的,而此时你又不需要,比如我们在获取文章列表的时候,文章的内容我们是不需要的,因此这时候我们就可以使用 defer 来过滤掉一些字段。这个字段跟 values 有点类
阅读全文
摘要:QuerySet API详解prefetch_related方法: prefetch_related :这个方法和 select_related 非常的类似,就是在访问多个表中的数据的时候,减少查询的次数。这个方法是为了解决 多对一 和 多对多 的关系的查询问题。比如要获取标题中带有 hello 字
阅读全文

浙公网安备 33010602011771号