Python技术分享

深入浅出学习Python

协议

  • API与用户的通信协议总是使用HTTPS协议

域名

  • 尽量将API部署在专用域名下:https://api.sunck.wang
  • 如果API比较简单,不会有进一步的扩展,可以考虑放在主域名下:http://www.sunck.wang
阅读全文 »

概述

  • 网站即软件
    • 是一种新型的软件,采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时( high latency)、高并发等特点。
  • 网站开发
    • 完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领域开始融合,现在我们必须考虑,如何开发在互联网环境中使用的软件。
  • 什么是RESTful
    • 是 Roy Thomas Fielding在他2000年的博士论文中提出的,即 Representational State Transfer的缩写,中文理解为“表现层状态转化”。如果一个架构符合REST原则,就称它为 RESTfuI架构。REST是设计风格而不是标准。是指客户端和服务器的交互形式。我们需要关注的重点是如何设计REST风格的网络接口。
阅读全文 »

概述

  • 对于中等流量的网站来说,尽可能的减少开销是非常必要的。缓存数据就是为了保存那些需要很多计算资源的结果,这样就不必在下次请求消耗计算资源
  • Django自带了一个健壮的缓存系统来保存动态页面,避免对于每次请求都重新计算
  • Django提供了不同级别的缓存维度,可以缓存特定视图的输出,还可以仅仅缓存那些很难生产出来的部分,或者可以缓存整个网站
阅读全文 »

概述

  • Django内置了邮件发送功能,被定义在django.core.mail模块中。
  • 发送邮件需要使用SMTP服务器,常用的免费服务器有163、126、QQ等。
阅读全文 »

问题

  • 用户发起request,并等待response返回。在views中,可能需要执行一段耗时的程序,那么用户就会等好长时间,造成不良好的用户体验
  • 网站每小时需要同步一次天气信息,但是http请求是需要触发的,难道要一小时请求一次吗?

解决

  • 使用celery
    • 将耗时操作放到celery中执行
    • 使用celery定时执行
阅读全文 »

问题

  • 使用视图通过上下文向模板传递数据,需要先加载完成模板的静态页面,再执行模型的代码,生成完整的html。返回浏览器,这个过程将页面与数据集成到了一起,扩展性差!

解决

  • 通过ajax的方式获取数据,通过dom操作将数据呈现在页面上
阅读全文 »

Paginator对象

  • 创建对象
    • Paginator(数据集合, int)
    • 返回分页对象,参数1为要分页的数据集合,参数2为每页有几条数据
  • 属性:
    • count:对象总数
    • num_pages:页码数
    • page_range:页码列表,从1开始
  • 方法:page(num)
    • num是页码,从1开始。会创建一个page对象,该对象存储当前页码的数据,如果页码不存在会抛出InvalidPage异常
  • 异常:
    • InvalidPage:当向page()传递一个无效的页码时抛出
    • PageNotAnInteger:当向page()传递一个不是整数的值时抛出
    • EmptyPage:当向page()提供了一个有效值,但是那个页码上没有任何的对象时抛出
阅读全文 »

概述

  • 当Django在处理文件上传的时候,文件数据被保存在request.FILES
  • FILES的每个键为下边代码中的name属性的值
    1
    <input type="file" name="" />
  • FILES只有在请求的方式为POST且提交的form带有enctype="multipart/form-data"的情况下才会包含数据。否则,FILES将为一个空的类似字典的对象
阅读全文 »

概述

  • 一个轻量级、底层的插件,可以介入Django的请求和响应处理过程,修改Django的输入或输出
  • 每个中间件组件就是一个独立的python类
阅读全文 »
0%