最喜欢的还是 Django 的 ORM 框架。公司的项目都是前后分离的,使用 Django 做后端接口开发还是很高效的。

特此总结一些 Django 开发的小经验。先说一些最最基础的吧。

使用 virtualenv 隔离开发环境

使用 pip 管理项目依赖,主要就是一个小技巧,使用 pip freeze > requirements.txt 来保存依赖的模块和版本

使用 gitignore.io 这个网站提供的 .gitignore 文件管理代码库文件

打包和发布

项目的打包和发布用的 Docker,Django 项目的 Dockerfile 特别简单:

FROM python:3.5
COPY ./requirements.txt /src
WORKDIR /src
RUN pip install -r requirements.txt
COPY . /src
EXPOSE
CMD uwsgi --http :--wsgi-file<path/to/wsgi.py>

这一个 Dockerfile 模板可以通吃 80% 的 Django 项目了。

日志配置

既然用 Docker,就放弃了把日志写入文件,直接写到标准输出。

# settings.py
# ...
LOGGING = {'version': 1,'disable_existing_loggers': False,'formatters': {'verbose': {'format': '[application] %(levelname)s %(asctime)s %(module)s %(message)s'}},'handlers': {'console': {'level': 'DEBUG','class': 'logging.StreamHandler','stream': sys.stdout,'formatter': 'verbose'},},'loggers': {'app': {'handlers': ['console'],'level': 'DEBUG','propagate': True,},},
}

自动化测试

既然是纯后端项目,工程师完全可以通过自动化测试来检测自己的代码。Django 本身对测试提供了很好的支持,可以通过 sqlite 来搭建测试数据库,还有基于内存的缓存,做测试不会增加对其他系统的依赖。开发起来事半功倍。

除了要写自动化测试代码,还要能统计测试覆盖率。目前我们用的是 coverage.py 这个工具,说实话没有 node.js 的 istanbul 好用,输出的报告没有 Istanbul 详细和易读。不过用来检查 “死代码” 还是够用的。

针对 http 代码的测试

有些项目需要对接的第三方系统比较多,比如微信认证、支付、短信等常见的,可能还有其他一些垂直业务领域的系统。这部分接口对接的代码,也应该纳入到测试当中,毕竟 Python 作为脚本语言,代码很容易出现错误。

这块一般是用 responses 这个模块来 mock http 请求。

定时任务

有一些 Django 项目需要做一些定时任务。首先,绝对不用 linux 内置的 crontab。主要的问题还是维护的成本高,没准哪天就把这个配置给忘了。

我们现在方式都是借助 Django Command 的功能,将定时任务封装成一个 command。在这个 command 里面运行一个 scheduler。就像下面这样:

import schedule
from django.core.management.base import BaseCommand
class Command(BaseCommand):def handle(self, *args, **kwargs):schedule.every(45).minutes.do(do_this)schedule.every().day.at('04:00').do(do_that)while True:schedule.run_pending()time.sleep(1)

Python学习交流q.u.n【 784758214 】内有安装包和学习视频资料,零基础,进阶,实战免费的在线直播免费课程,希望可以帮助你快速了解Python

总结Django一些开发经验相关推荐

  1. python web开发框架flask_Python Web 开发框架,Flask 与 Django那个更好

    本文把 Flask 和 Django 做一个比对,因为我对这两个 Python Web 框架都有实际的开发经验.希望我可以帮助您选择学习哪个框架,因为学习一个框架可能会非常耗时 -- 当然也很有趣! ...

  2. Flask与Django对比

    Flask与Django对比 Django vs Flask Flask 框架之间的差别 Django功能大而全,Flask只包含基本的配置 Django的一站式解决的思路,能让开发者不用在开发之前就 ...

  3. python django web典型模块开发实战下载_Django实战 Python Web典型模块与项目开发

    本书结合样例,介绍 Django 的基础知识.主要模块的开发以及权限管理等高级内容,并且通过图书管理系统.博客系统.车费管理系统 3 个项目的开发实战,使读者既能掌握 Django 的重要开发技术,又 ...

  4. 过节的快乐,在于Free | 手把手带你学Django

    一开始入坑Django,你总是会遭遇诸如此类的迷茫和困惑,比如, 大神推荐,看官方文档就够了,这么多文档,都要看完吗? 如何规划自己的Python web成长路径? Django开发的未来在哪里? 学 ...

  5. python web flask开发框架_Python Web 开发框架,Flask 与 Django那个更好

    本文把 Flask 和 Django 做一个比对,因为我对这两个 Python Web 框架都有实际的开发经验.希望我可以帮助您选择学习哪个框架,因为学习一个框架可能会非常耗时 -- 当然也很有趣! ...

  6. python django flask_Flask 与 Django 的简单对比

    上一周我学习了 Flask ,这一周我打算做一个 Flask 教程.本文先把 Flask 和 Django 做一个比对,因为我对这两个 Python Web 框架都有实际的开发经验.希望我可以帮助您选 ...

  7. python好找工作么-python和django掌握到什么水平才好找工作?

    python是近2各月才开始使用的,深受其简洁感染并决定一直使用该语言,想快点换个大家都用python的环境(我跳槽不是因为公司不好,是和信仰相违背,信仰一门语言一门技术总是好的),但是,我学习这个语 ...

  8. Django Rest Framework

    新的一年启程,大家又投入到紧张的学习和工作中,作为一个互联网人必须时刻紧跟科技发展的脚步.对于大火的 Python 编程语言我们怎么能错过,我们[51Reboot]这就为大家带来新年的第一堂 Pyth ...

  9. django 业务逻辑写在view里吗?_Python Web框架Django简介

    引言 我们都知道,Django是一种基于Python的Web开发框架. 那么,什么是Web开发?Web开发指的是开发基于B/S架构,通过前后端的配合,将后台服务器的数据在浏览器上展现给前台用户的应用. ...

最新文章

  1. java system.out.read_求教Java高手,关于输入流的read的问题,为什么while循环体里面的两个System.out.println没有打印出来?...
  2. RubyMine 1.0加入Ruby IDE大家庭
  3. 【文章】孝心无价 作者:毕淑敏
  4. 精典的网吧常用批处理收集
  5. 创业不容易,小本创业就更加难
  6. js时间对象相关函数
  7. iOS 友盟分享总结
  8. C# 基础(十八)C# 工程自动生成app.manifest、AssemblyInfo.cs、Resources.Designer.cs、Settings.Designer.cs文件的作用
  9. 【计算机网络】物理层 : 编码 ( 数字数据 编码 数字信号 | 非归零编码 | 归零编码 | 反向不归零编码 | 曼彻斯特编码 | 差分曼彻斯特编码 | 4B/5B 编码 )
  10. img和文字都居中对齐
  11. eclipse 中各种小图标含义
  12. 新视野大学英语(1)课本单词汇总
  13. 西门子KTP二代精简触摸屏点击无反应,触摸失效的处理对策
  14. BIP语言介绍(一)
  15. 研发效能——如何提高?
  16. OpenCV:imwrite存储图像后为全黑
  17. 面向对象设计原则之接口隔离原则
  18. 计算机华科与电子科技大学哪个好,华中科技大学、电子科技大学、中国科学技术大学,哪所实力最强?...
  19. 介绍一款Visual Studio下的arduino插件Visual Micro (Arduino IDE for Visual Studio)
  20. 360董事长周鸿祎演讲实录

热门文章

  1. 计算机系应用,近距离看专业 计算机专业应用篇
  2. c语言程序设计授课进度安排表,C语言程序设计教学大纲、教学计划进度简表
  3. python控制台输入代码_Python实现控制台输入密码的方法
  4. 怎么配置服务器php环境,配置PHP服务器环境步骤详解
  5. python实现ai聊天机器人_AI人工智能Python实现简单人机对话:你好,人类!
  6. android 单选按钮横置,input radio如何实现横向布局
  7. 计算机学硕和专硕编码,2018考研报名:学会从专业代码判断学硕还是专硕
  8. hyperv动态内存Linux,Linux 之动态分配内存方式
  9. 【BZOJ2005】【codevs1937】能量采集,数论练习之二维公约数求和
  10. 打开c盘_为什么你的C盘总是爆满?教你彻底清理C盘空间,瞬间提速50%