对于Python的Django框架使用的一些实用建议


Posted in Python onApril 03, 2015

前言:随着Django1.4第二个候选版的发布,虽然还不支持Python3,但Django团队已经在着手计划中,据官方博客所说,Django1.5将会试验性的支持python3。

Django 作为一个杰出的Python开源框架,或许得不到和其它流行框架如Rails这样多的赞美,但是它和其他框架一样精炼,非常注重DRY(Don't Repeat Yoursef)原则、组件的重用性,通过自动化过程使编码更简洁。

如果在Django项目中能够灵活使用某些方法和技巧的话,它将大大加快软件开发的速度同时避免很多头疼的事。作者在下面列举了几点,这些方法由浅入深,可以帮助任何级别的程序员更加熟练的使用Django。

0、  在配置中使用相对路径

某些原因使得项目可能常常会被来回的迁移。如果没有事先规划好这种可能性的话这绝对是一个棘手的问题。Rob Hudson 有一个极好的技巧能够确保你的Django项目在部署过程中能够轻松的来回迁移。仅仅只要编写几行代码在你的配置文件(settings.py)中。
 

import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
 
TEMPLATE_DIRS = (
  BASE_DIR + '/templates',
)

 

1、  使用{%url%}标签

尽可能使用向后兼容的{%url%}标签来替换硬编码形式的href,与使用绝对路径的url(当然最好不要这样做) 一样达到相同的效果。你的Django项目迁移起来,那些链接也不会有影响。(译者注:比如说我们有一个views.about函数指向about页面r'^about/$',就可以{% url views.about as about_url %}然后用{{about_url}}这个变量来代替绝对URL地址)尽管它还不是最高级的技巧,但是它确实值得你应用于Django项目中。
2、  尝试把Django admin应用到PHP项目中

Django最伟大的特性之一就是已经成为Django的核心功能的用户验证系统。它易安装,主要用于用户认证和其它一些必要的配置。这个酷毙了的用户系统甚至被建议应用到你的PHP项目中去,这里有一边Jeff Croft 关于为什么Django能够作为任何语言任何应用中的系统管理模块的一个很好的解决方案。

 

3、  使用独立的媒体服务器

在开发环境中把静态文件放在与Django项目所在的同一台服务器中问题并不大,但是却不要使用在生产环境中,为什么?效率问题。Jacobian.org给出了一个合理的解释。通过一台独立的服务器来处理静态文件,性能将得到有效的提升,如果不想买服务器的话,那么使用Amazon S3相对来更便宜。

 

4、  使用Debugger工具条

调试工具对任何一种语言来说都是不可或缺的.他们能够加快开发的速度,指出潜在的缺陷.  Rob Hudson开发了一个对开发人员非常有用django调试工具。

 

5、 使用Django单元测试

利用单元测试确保你代码的改变和预期的一样,而不会破坏任何老的代码,以便向后兼容。Django一个强大的特性就是他能极其简单地写单元测试。Django也可直接使用python的文本测试和单元测试。Django的文档提供了一个详细的教程和样例代码关于怎样做单元测试使得代码正确地运行,以及去除讨厌的bug

 

6、 使用速查卡

这里有两页厚的速查卡,在 Django文档中你可能翻来覆去要找半天的东西在这里一目了然。它包含如下几个主题

模板:

模板标签及可选项

模板过滤器及可选项

日期格式化语法快速查阅

模型:

域和及选项

常用域的可选项

元类型可选项

模型管理可选项

表单:

域和可选项

常用域可选项

标准错误消息键值

 

7、使用Django-chunks

除了使用Django的富文本编辑器创建块更容易之外,Django-chunks同样是用于模板中,这是重用代码块的必不可少的工具。

 

8、 使用Memcache

如果性能在你的Django项目中已经成为一个棘手的问题,那么你将需要使用一些缓存策略。然而Django为缓存提供很多的选择。目前最好的无疑是Memcache,用Django安装memcache非常地简单,如果你使用cmemcache模块的时候。只要模块安装完成后,你仅仅修改一行配置项,你的Django页面变得轻快起来。

 

9、使用Django,心动不如行动

在你阅读完这篇文章后如果你仍然不完全理解Django的强大,在你的下一个项目中使用Django的一个合符情理的理由就是:它能够节省各种不同软件设计的时间。Jeff Croft解释为什么用Django创建一个项目比你自己设计出来的更高效。Django允许你扩展自己的Web站点,不需要担心设计或者代码以及数据库的兼容性,它会工作地很棒。

Python 相关文章推荐
Python如何读取MySQL数据库表数据
Mar 11 Python
Python字典,函数,全局变量代码解析
Dec 18 Python
python抓取文件夹的所有文件
Feb 27 Python
对numpy中的where方法嵌套使用详解
Oct 31 Python
python3+pyqt5+itchat微信定时发送消息的方法
Feb 20 Python
windows下numpy下载与安装图文教程
Apr 02 Python
numpy数组广播的机制
Jul 12 Python
python多任务之协程的使用详解
Aug 26 Python
使用Tensorflow实现可视化中间层和卷积层
Jan 24 Python
使用Keras实现Tensor的相乘和相加代码
Jun 18 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
Jun 29 Python
上帝为你开了一扇窗之Tkinter常用函数详解
Jun 02 Python
《Python之禅》中对于Python编程过程中的一些建议
Apr 03 #Python
给Python初学者的一些编程技巧
Apr 03 #Python
Python新手在作用域方面经常容易碰到的问题
Apr 03 #Python
Python中设置变量作为默认值时容易遇到的错误
Apr 03 #Python
用Python编写一个简单的Lisp解释器的教程
Apr 03 #Python
举例讲解Python中is和id的用法
Apr 03 #Python
详解Python2.x中对Unicode编码的使用
Apr 03 #Python
You might like
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
FormValidate 表单验证功能代码更新并提供下载
2008/08/23 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
jquery animate实现鼠标放上去显示离开隐藏效果
2013/07/21 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
jquery.tableSort.js表格排序插件使用方法详解
2020/08/12 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
vue-axios使用详解
2017/05/10 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
详细分析React 表单与事件
2020/07/08 Javascript
[34:39]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第二局
2016/03/05 DOTA
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
Python中List.index()方法的使用教程
2015/05/20 Python
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
只需7行Python代码玩转微信自动聊天
2019/01/27 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
python中open函数的基本用法示例
2019/09/07 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
HTML5 Canvas实现平移/放缩/旋转deom示例(附截图)
2013/07/04 HTML / CSS
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
介绍一下如何优化MySql
2016/12/20 面试题
大客户销售经理职责
2013/12/04 职场文书
车辆委托书范本
2014/10/05 职场文书
预备党员期盼十八届四中全会召开思想汇报
2014/10/17 职场文书
公司保密管理制度
2015/08/04 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
Python基础之字符串格式化详解
2021/04/21 Python