Django:当你开始一个新项目时要注意的地方 - 2018年更新

2018 年 3 月 8 日 Python程序员

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。


现在回想起来,如果在开始Django之旅的时候我注意了这几个地方,会省去我大量的时间和精力。


延伸阅读(Too Long To Read): 注意使用cookiecutter-Django 以便上手所提到的大部分东西。


当我开始做web开发时,我是一名普通的php程序员,不屑于老是看文档。经过努力,总能从搜索引擎中找到解决方法(嗯,现在仍然如此)。


让我很不爽的是,有时候各种东西搅和在一起,你很难读懂别人的代码,甚至是几个礼拜前自己写的代码。这一点不可小觑,阅读代码总是花很多时间。


Python(以及Django)的出现解救了我。第一次,我能够轻松地阅读别人的代码了(也不全是,哈哈)。阅读,变得更简单了。事实上,通过阅读别人的代码,我的技能提高了很多。然而,和其他人一样,一开始我犯了很多,尤其是Django相关的错误。


以下是我希望记录下来的东西,对于开始时踩过的那些坑,我会逐一添加。


Cookie cutter Django


每次当我开始一个项目时,总会创建一个什么都没有的空白项目。然后,反复地修改项目,直到出现我希望的设定/结构。


我原以为我只要为新项目建一个代码库,然后继续开发就好了,但实际上维护和更新这个代码库却占用了大量的时间。


cookiecutter-Django 是一个超棒的项目。有了它,你可以在开始项目时就应用很多人称“最佳实践”的东西。它也自带了一些有助于加速开发的常用组件。


Virtualenv


如果你已经看过一些Python文档,你应该见过这个东西。再怎么推荐都不为过啊。


一定要使用virtualenv来分开每个项目的开发环境。即使你开始的时候只有一个项目,不要都放在global里面,并且你很快就有更多的项目的。


当你创建一个新的环境时,可以这样指定Python版本:

virtualenv env -p python3


另外,确保你查看一下 virtualenvwrapper,这篇文档能帮助你轻松地管理各种不同的虚拟环境:

  • 在一个地方存储所有的虚拟环境

  • 尽快进入虚拟环境,比如,只要运行workon awesome project就好了

  • 设定好当你进出这些环境时所运行的脚本(简单的例子如:切换到项目所在目录,启动一些东西)


设定之结构


这是另一件重要的事情 -- 我是认真的。


常规的开发流程是这个样子:你进行本地开发,然后推送到某种测试服务器,最后上线。


每个环境都有其自身的设定和配置(比方说,本地的数据库配置会不同于生产环境的配置)。


对于特定的东西,尤其是那些敏感信息,可以选择从环境变量来获取。

其他的东西,你可以为不同的环境准备不同的设定文件,如图所示:

base.py 包含常见的环境设定;local.py 包含属于本地环境的设定;


local.py, staging.py 和 production.py 会导入base.py的设定。你可以借助环境变量来决定要用哪个设定文件。


manage.py的例子:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.local')


如果你使用cookiecutter-django,这些是已经存在的!


从一开始自定义用户模型


始终从一开始就选择自定义用户模型。


你可能会觉得对于简单的项目,没必要开始的时候需要一个自定义的用户模型(我原来也这样认为)


可是呢,如果项目持续一段时候后,你很有可能很快需要转到用户模型,以便

引入额外的东西。迁移到用户模型并不总是一件有乐趣的任务。


用于监控的Sentry


用Sentry来进行监控。真的,很简单很容易。你能获得些什么?

  • 当你的站点有问题时,会有通知邮件

  • 管理你的问题(给事情打勾,哈哈)

  • 问题的统计


几个可以使用的App


  • Django-extensions 包含很多东西,我并非都用过。比如:

  • runserver_plus: 不是常规的runserver,而是用来本地运行服务的。你会接触到很好看的调试界面,每步都提供交互式Python Shell! (这点是最吸引我的)

  • show_urls: 显示所有项目的urls,和他们指向的视图。

  • django-debug-toolbar 调试工具栏可以显示很多东西,比如调试消息,比如执行了那些SQL查询。

  • django_builder 你只需要引入你的模型,然后它会生成各种东西,是的,有url, 视图,表单,测试。


英文原文:https://peeomid.com/blog/2018-01-26-what-i-wish-i-knew-when-i-started-django-development-2018/
译者:泰然


登录查看更多
0

相关内容

Django 是用 Python 语言写的开源 Web 开发框架,它鼓励快速开发,并遵循 MVC 设计和 BSD 版权。Django 根据比利时的爵士音乐家 Django Reinhardt 命名。
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
224+阅读 · 2020年3月22日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
手把手教你用Python做一个哄女友神器,小白可上手
网易智能菌
5+阅读 · 2019年6月15日
Pipenv: 吹嘘自己无所不能,实际上没什么卵用
Python程序员
3+阅读 · 2018年12月21日
已删除
AI科技评论
4+阅读 · 2018年8月12日
占坑!利用 JenKins 持续集成 iOS 项目时遇到的问题
我是一个爬虫
码农翻身
12+阅读 · 2018年6月4日
刚开始学编程?这几款小工具能让你事半功倍
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
GitHub上12月份最热门开源项目
程序猿
4+阅读 · 2018年1月9日
Vue.js 很好,但是比 Angular 或 React 更好吗?
程序猿
3+阅读 · 2017年8月27日
Do RNN and LSTM have Long Memory?
Arxiv
19+阅读 · 2020年6月10日
Arxiv
11+阅读 · 2019年6月19日
Rapid Customization for Event Extraction
Arxiv
7+阅读 · 2018年9月20日
Arxiv
22+阅读 · 2018年8月30日
Arxiv
4+阅读 · 2018年5月4日
VIP会员
相关资讯
手把手教你用Python做一个哄女友神器,小白可上手
网易智能菌
5+阅读 · 2019年6月15日
Pipenv: 吹嘘自己无所不能,实际上没什么卵用
Python程序员
3+阅读 · 2018年12月21日
已删除
AI科技评论
4+阅读 · 2018年8月12日
占坑!利用 JenKins 持续集成 iOS 项目时遇到的问题
我是一个爬虫
码农翻身
12+阅读 · 2018年6月4日
刚开始学编程?这几款小工具能让你事半功倍
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
GitHub上12月份最热门开源项目
程序猿
4+阅读 · 2018年1月9日
Vue.js 很好,但是比 Angular 或 React 更好吗?
程序猿
3+阅读 · 2017年8月27日
Top
微信扫码咨询专知VIP会员