对于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里隐藏的“禅”
Jun 16 Python
Python中遍历字典过程中更改元素导致异常的解决方法
May 12 Python
Python中Django 后台自定义表单控件
Mar 28 Python
Python3实现转换Image图片格式
Jun 21 Python
Python实现对文件进行单词划分并去重排序操作示例
Jul 10 Python
python 调试冷知识(小结)
Nov 11 Python
Python文件操作方法详解
Feb 09 Python
使用jupyter notebook直接打开.md格式的文件
Apr 10 Python
python实现五子棋程序
Apr 24 Python
Python实现数字的格式化输出
Aug 01 Python
Python urllib request模块发送请求实现过程解析
Dec 10 Python
Django如何与Ajax交互
Apr 29 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
Zend Studio 实用快捷键一览表(精心整理)
2013/08/10 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
js中判断控件是否存在
2010/08/25 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
使用js检测浏览器的实现代码
2013/05/14 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
React 源码中的依赖注入方法
2018/11/07 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
2018/11/23 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
vue 递归组件的简单使用示例
2021/01/14 Vue.js
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
python3字符串操作总结
2019/07/24 Python
pytorch+lstm实现的pos示例
2020/01/14 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
FitFlop澳大利亚官网:英国符合人体工学的鞋类品牌
2017/06/05 全球购物
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
2014年大班元旦活动方案
2014/02/26 职场文书
高校优秀辅导员事迹材料
2014/05/07 职场文书
社区领导班子四风问题原因分析及整改措施
2014/09/28 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
用Python将GIF动图分解成多张静态图片
2021/06/11 Python