在上一篇中介绍了CRM和Django,在本篇中将聊聊Django的最佳实践。
总的来说就是遵循Django的设计理念:松耦合、代码精简、快速开发、DRY、明确优于隐式、一致性等。下面从开发环境、项目组织结构、调试等几个方面进行展开。
通常在项目开发的过程中,除了安装Python和Django,还需要选择虚拟环境、开发工具、版本控制等。
虚拟环境
Python开发需要安装第三方库,比如Django本身也是一个第三方库,当本地安装了其他库或有多个项目时容易导致依赖混乱或冲突。虚拟环境可以为一个项目提供独立的Python环境。
目前最流行的 Python 虚拟环境配置工具是virtualenv。而Python从3.3版本之后也内置了venv命令进行包管理,功能和virtualenv类似。还有一个虚拟管理工具是pipenv,它是结合了pip和virtualenv两者的功能。
这里使用virtualenv创建和管理虚拟环境。virtualenv的安装命令如下:
$ pip install virtualenv
安装完成后使用virtualenv name
创建虚拟环境,这里创建一个名为venv的虚拟环境。
$ virtualenv venv
创建完成后会在当前目录下生成一个venv的文件夹,使用source venv/bin/activate
命令激活该虚拟环境。激活之后,可以用pip freeze > requirements.txt
命令将当前虚拟环境中的Python库及其版本导出到requirements.txt文件中。在服务器上部署时使用pip install -r requirements.txt
安装所有的依赖库就可以了。
开发工具
正所谓“工欲善其事,必先利其器”,在开始学习Python的时候可以选择Python的IDLE或文本编辑工具编写代码。但真要开发项目的时候还是需要一个IDE才能高效的编写代码和进行调试。
对初学者来说,PyCharm是不错的选择,其社区版是免费的(下载地址)。PyCharm几乎包含了项目开发和调试中所需的所有功能,确定是启动有点慢,运行消耗内存比较多,不过对现在的电脑配置来说问题不到。
除了PyCharm之外还可以使用VSCode、Sublime等编辑器进行开发,这些编辑器需要安装插件才能提供PyCharm上的那些功能。
代码管理
项目开发过程中为防止代码丢失以及代码异常需要回退等需要对代码进行版本管理,当前比较主流的是使用Git进行版本管理。不熟悉的同学可以在learngitbranching这个网站上进行学习和练习。
Django使用命令创建项目的时候已经提供了基本的项目组织结构,在开发过程中每个人也有各自的组织结构风格。当前比较流行且简单的办法是使用cookiecutter-django创建一个项目。
cookiecutter 是一个通过项目模板创建项目的命令行工具。而cookiecutter-django是github上有着近7千star的Django项目模板,可以快速生成比django-admin startproject命令生成的默认目录更优秀的目录布局。其优点如下:
- 使用100%的测试覆盖率渲染Django项目
- 前端使用Twitter Bootstrap v4 开发模板
- 通过django-environ进行环境变量设置
- 优化开发和生产设置
- 通过django-allauth注册
- 自定义用户模型
- 可以基于Grunt和livereload构建
- 可以多平台部署(主要是国外平台)
- 使用unittest或py.test运行测试
cookiecutter-django可以通过pip命令进行安装,安装命令如下:
$ pip install cookiecutter
$ cookiecutter https://github.com/pydanny/cookiecutter-django
运行过程中,会询问项目名称、数据库配置等相关的项目配置信息,安装需要进行选择即可。
简单来说,代码要遵循简洁、可读、松耦合、DRY等原则。比如
模型应该封装一个“对象”的各个方面,遵循 Martin Fowler 的 Active Record 设计模式。
编写视图应该和编写 Python 函数一样简单。开发人员不应该在函数执行时实例化一个类。
模板系统看作一个工具,用于控制表现方式和表示方式相关的逻辑。模板系统不应该支持超出这个基本目标的功能。
通过模板继承将通用的页面部分,如页眉、页脚、导航栏等存储在一个地方,从而减少重复的代码。
另外,也可参考Google的Python代码规范。
为方便代码进行调试和问题分析,一个好的IDE就可以节约不少时间,然后就是好的代码规范和详细的日志,除此之外再推荐一个调试工具django-debug-toolbar。
django-debug-toolbar是Django开发中必备利器,可以帮助开发者快速了解项目的整体信息以及每个页面包括sql信息,http相关信息。访问Django的时候在页面右侧有各项配置面板,点击即可查看各种调试信息。
如果使用cookiecutter-django的话,已经集成在项目中了,其安装过程可参考官方文档。