Python技术分享

深入浅出学习Python

概述

  • 对于中等流量的网站来说,尽可能的减少开销是非常必要的。缓存数据就是为了保存那些需要很多计算资源的结果,这样就不必在下次请求消耗计算资源
  • 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类
阅读全文 »

概述

  • **内容发布:**负责添加、修改、删除内容,开发这些重复的功能是一件非常没有意义的事情,并且缺乏创造力。Django会根据定义的模型类来自动生成管理模块
  • 公共访问

配置Admin应用

  • 默认已经配置:'django.contrib.admin',
阅读全文 »

作用

  • 在注册、登陆页面为了防止暴力请求,可以加入验证码功能,如果验证错误,则不需要继续处理,可以减轻服务器和数据库的压力。
  • 也是一种有效的防止csrf的方法。
阅读全文 »
0%