对于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 01 Python
python获取交互式ssh shell的方法
Feb 14 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
Jun 19 Python
Python3之字节串bytes与字节数组bytearray的使用详解
Aug 27 Python
pymysql模块的使用(增删改查)详解
Sep 09 Python
python groupby 函数 as_index详解
Dec 16 Python
python爬虫用mongodb的理由
Jul 28 Python
详解python对象之间的交互
Sep 29 Python
如何使用scrapy中的ItemLoader提取数据
Sep 30 Python
一篇文章带你搞懂Python类的相关知识
May 20 Python
详细介绍python类及类的用法
May 31 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中将网页导出为Word文档的代码
2012/05/25 PHP
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
php给图片加文字水印
2015/07/31 PHP
PHP内置加密函数详解
2016/11/20 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
js的with语句使用方法
2007/09/21 Javascript
js实现iframe动态调整高度的代码
2008/01/06 Javascript
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
JavaScript判断密码强度(自写代码)
2013/09/06 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
JavaScript将字符串转换为整数的方法
2015/04/14 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
2017/04/10 jQuery
浅析Angular2子模块以及异步加载
2017/04/24 Javascript
深究AngularJS中ng-drag、ng-drop的用法
2017/06/12 Javascript
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
2017/10/23 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
js如何验证密码强度
2020/03/18 Javascript
Python装饰器原理与简单用法实例分析
2018/04/29 Python
基于python全局设置id 自动化测试元素定位过程解析
2019/09/04 Python
PyTorch中permute的用法详解
2019/12/30 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
2020/03/03 Python
Django admin 实现search_fields精确查询实例
2020/03/30 Python
英国花园药房: The Garden Pharmacy
2017/12/28 全球购物
手术室护士长竞聘书
2014/03/31 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
合理缓解职场压力,让你随时保持最佳状态!
2019/06/21 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
Nginx反向代理、重定向
2022/04/13 Servers