选择一种语言和框架,因为你在上一个项目中使用了它或者因为你更熟悉它,但是这不是正确的方法。

项目启动

在开始一个新的软件项目之前,您需要评估哪种语言和框架最适合您所期望的结果。什么对你最重要?安全性、快速开发、可伸缩性、多功能性、支持还是其它?

经过多年使用不同技术(包括移动和web开发)的经验,我相信 django 提供了其他web框架无法提供的完整特性。

这是一个很大的要求。

Django 为许多最常用的Web站点提供支持,比如 InstagramPinterest,甚至 Facebook 也使用 Django 作为后台工具。Django 来自出版行业,所以《华盛顿邮报》和《史密森尼杂志》使用 Django 也就不足为奇了。-- Amit Ashwini,营销副总裁@ Zibtek

何时使用 django

  • 需要开发一个web应用程序或API后端。
  • 需要快速迁移、快速开发,并在前进的同时进行更改。
  • 需要集成相关安全防范,例如 csrfsql注入xss ...
  • 将来可能需要高阶技术,例如 机器学习
  • 需要一个可靠的框架,并且有着良性的发展
  • 需要应用程序和API后台在同一个代码库中,以符合单一来源真理 (又名 DRY
  • 需要 orm 支持
  • 需要遇到一些问题,如何找到解决方案,例如有着良好的文档及社区支持

除了以上几点,你自己(或你的团队)的技能也应该在考虑在内。

如果是一个了解 web如何工作 的 web 开发人员,那么使用 django 是相对无缝的,你可能只需要了解下 django 的结构(当然也有一些其它的东西)即可。

何时不使用 django

  • 应用程序规模非常庞大,不能把所有东西放在一个代码库中。
    可能想把你的应用拆分成微服务。每一层可以由专门的团队和流程更好地处理。最好每个用例使用不同的技术。django 可能再某些特定的用例中会有所帮助。但使用 django 开发所有东西可能并不明智。
  • 构建一个非常基础的应用程序,它不需要数据库、文件操作或者比较复杂的操作。
    微框架更适合这些用例。Flask 是用 python 编写的最流行的微框架之一。类似的微框架在其他技术中也可用。
  • 希望一切从零开始,知道自己在做什么
  • 自己或者团队根本不熟悉 django,没有足够的时间和资源来获取所需要的技能
    这种情况下,最好的解决方案是使用最熟悉的方法。如果采用一项新技术或新框架,把事情搞砸的可能性会成倍增加。

如果以上内容不适用于您的项目,那么 django 可能适合你。

何时使用 django 以及何时不用?的更多相关文章

  1. Django开启https(不用nginx)

    首先安装需要用到的包 pip install django-extensions pip install django-werkzeug-debugger-runserver pip install ...

  2. Django admin定制化,User字段扩展[原创]

    前言 参考上篇博文,我们利用了OneToOneField的方式使用了django自带的user,http://www.cnblogs.com/caseast/p/5909248.html , 但这么用 ...

  3. web框架django初探

    Web框架介绍 一般会分为两部分:服务器程序和应用程序.服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各种数据进行整理.应用程序则负责具体的逻辑处理.为了方便应用程序的开发,就出 ...

  4. Python之路【第十六篇】Django基础

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  5. 1.django笔记之django基础

    一.django简介 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内 ...

  6. 文成小盆友python-num17 - django基础

    一.首先了解web应用的本质 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 下面利用socket实现一个简单的web框架: #!/usr/b ...

  7. 在sae配置django项目

    1:使用sae开发必须有sae帐号,自己注册吧: 2:在sae上新建立一个python项目: 3:建立完成之后新建一个版本,即版本1: 4:获取svn的地址在eclipse中check下来: 5:注意 ...

  8. 全面解读Python Web开发框架Django

    全面解读Python Web开发框架Django Django是一个开源的Web应用框架,由Python写成.采用MVC的软件设计模式,主要目标是使得开发复杂的.数据库驱动的网站变得简单.Django ...

  9. 直接用nose进行django项目测试并输出html报告

    先说需求:1.测试django项目:2.打印测试报告(html格式)有以下几种测试方法:1.django自带的测试模块.在app目录下的tests.py文件中写测试类,类似这样: class MyTe ...

随机推荐

  1. 移动开发首页业界资讯移动应用平台技术专题 输入您要搜索的内容 基于Java Socket的自定义协议,实现Android与服务器的长连接(二)

    在阅读本文前需要对socket以及自定义协议有一个基本的了解,可以先查看上一篇文章<基于Java Socket的自定义协议,实现Android与服务器的长连接(一)>学习相关的基础知识点. ...

  2. Tigase XMPP Server

    Tigase XMPP Server是我们的旗舰服务器端软件,提供XMPP服务或实例通信(IC)服务.最基本的解释是Tigase是一个聊天服务器,但它远不止于此.聊天是其可能的应用程序之一,但任何类型 ...

  3. tkinter的set()与get()

    下面用set()实现,这里用了一个标记记录点击的状态,不管内容是什么点了就变 from tkinter import * def btn_hit(): global msg_on if msg_on ...

  4. 有关MFC类与其窗口句柄

    Attach,其实就是让一个CWnd对象的HWND成员指向这个窗口句柄.这就是Attach主要完成的任务. Detach.如前所述,WNDCLASS其实和CWnd根本没有什么关系.它们之间只是通过CW ...

  5. Java 之 线程 —线程通信( 等待唤醒机制)

    一.线程间通信 概念:多个线程在处理同一资源,但是处理的动作(线程的任务)却不相同. 例如: 线程 A 用来生成包子的,线程 B 用来吃包子的,包子可以理解为同一资源,线程 A 与线程 B 处理的动作 ...

  6. Java 面向对象—杂项(方法不能重写,修饰符,变量)

    一.哪些方法不能被重写? 1.final 修饰的不能重写 2.static 修饰的不能重写 3.private 修饰的,因为私有的在子类中不可见 4.如果跨包的话,修饰符缺省的也不能被重写,因为缺省的 ...

  7. linux的bash特性

    Shell本身是应用程序,是用户与操作系统之间完成交互式操作的一个接口程序,为用户提供简化的操作. Bourne Again Shell,简称bash,是Linux系统中默认的shell程序. Bas ...

  8. nginx 一个端口布署多个单页应用(history路由模式)。

    目前web开发 使用一般前后端分离技术,并且前端负责路由.为了美观,会采用前端会采用h5 history 模式的路由.但刷新页面时,前端真的会按照假路由去后端寻找文件.此时,后端必须返回index(i ...

  9. 浅谈原子操作、volatile、CPU执行顺序

    浅谈原子操作.volatile.CPU执行顺序 在计算机发展的鸿蒙年代,程序都是顺序执行,编译器也只是简单地翻译指令,随着硬件和软件的飞速增长,原来的工具和硬件渐渐地力不从心,也逐渐涌现出各路大神在原 ...

  10. 泛微e-cology OA系统某接口存在数据库配置信息泄露漏洞复现

    1.简介(开场废话) 攻击者可通过存在漏洞的页面直接获取到数据库配置信息.如果攻击者可直接访问数据库,则可直接获取用户数据,甚至可以直接控制数据库服务器. 2.影响范围 漏洞涉及范围包括不限于8.0. ...