对于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描述器descriptor详解
Feb 03 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
python3获取当前文件的上一级目录实例
Apr 26 Python
对django中render()与render_to_response()的区别详解
Oct 16 Python
在Pycharm terminal中字体大小设置的方法
Jan 16 Python
Python使用paramiko操作linux的方法讲解
Feb 25 Python
python实现扫描ip地址的小程序
Apr 16 Python
如何在 Django 模板中输出 "{{"
Jan 24 Python
jupyter 导入csv文件方式
Apr 21 Python
python3 中使用urllib问题以及urllib详解
Aug 03 Python
虚拟环境及venv和virtualenv的区别说明
Feb 05 Python
pycharm最新激活码有效期至2100年(亲测可用)
Feb 05 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
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
smarty模板数学运算示例
2016/12/11 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
使用JavaScript switch case 另类写法
2010/03/14 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
2017/02/17 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
jQuery设计思想
2017/03/07 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
微信小程序引入Vant组件库过程解析
2019/08/06 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
2020/08/25 Javascript
Vue实现简易购物车页面
2020/12/30 Vue.js
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
详解Python 正则表达式模块
2018/11/05 Python
python write无法写入文件的解决方法
2019/01/23 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
Pandas数据离散化原理及实例解析
2019/11/16 Python
蔻驰美国官网:COACH美国
2016/08/18 全球购物
全球最大的服务市场:Fiverr
2017/01/03 全球购物
机关门卫岗位职责
2013/12/30 职场文书
金融管理专业毕业生求职信
2014/03/12 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
邀请书格式范文
2015/02/02 职场文书
党校学习个人总结
2015/02/15 职场文书
2015年个人思想总结
2015/03/09 职场文书