zoukankan      html  css  js  c++  java
  • Django介绍

    一、Django是什么?

    Django是用Python写的一个自由和开放源码web应用程序框架。采用了MVT的软件设计模式,即模型Model,视图VIew和模版Template。web框架是一套组件,能帮助你更快,更容器的开发web站点。
    当你开始构建一个web站点时,你总需要一些相似的组件:处理用户认证(注册、登录、退出)的方式、一个管理站点的模版、表单、上传文件的方式等等。
    由于框架的存在,你无需重新发明轮子就能建立新的站点。

    二、Django组件

      Django框架的核心包括:一个面向对象的映射器,用作数据模型(以Python类的形式定义)和关系型数据库建的媒介;一个基于正则表达式的URL分发器;一个视图系统,用于处理请求;以及一个模版系统。

    核心框架中还包括:

    • 一个轻量级的、独立的Web服务器,用于开发和测试。
    • 一个表单序列化及验证系统,用于HTML表单和适于数据库存储的数据之间的转换。
    • 一个缓存框架,并有几种缓存方式可供选择。
    • 中间件支持,允许对请求处理的各个阶段进行干涉。
    • 内置的分发系统允许应用程序中的组件采用预定义的信号进行相互间的通信。
    • 一个序列化系统,能够生成或去读采用XML或JSON表示的Django模型示例。
    • 一个用于扩展模版引擎的能力的系统。

    三、为什么要用框架

      软件系统随着业务的发展,变得越来越复杂,不同领域的业务所涉及到的知识、内容、问题非常非常多。如果每次都从头开发,那都是一个很漫长的事情,且并一定能将它做好。团队协作开发时,没了统一标准,大家各写各的,同样的重复的功能到处都是。由于没有统一调用规范,很难看懂别人写的代码。出现BUG或二次开发维护时,根本无从下手。
      而一个成熟的框架,它是模版化的代码,它会帮我们实现很多基础性的功能,我们只需要专心的实现所需要的业务逻辑就可以了。而很多底层功能操作,就可以完完全全不用坐太多考虑,框架已帮我们实现了。这样的话,真个团队的开发效率可想而知。另外对团队成员的变动,也不用太过担心,框架的代码规范让我们能轻松的看懂其它开发人员所写的代码。

    四、框架的主要特点和要求

    • 代码模版化
     框架一般都有统一的代码风格,同一层的不同类代码,都是大同小异的模版化结构,方便使用模版工具统一生成,减少大量重复代码的编写。在学习时通常只需要理解某一个具有代表性的一个类,就等于了解了同一层的其它大部分类结构和功能,容易上手。团队中不同的人员采用类同的调用风格进行编码,很大程度提高了代码的可读性,方便维护与管理。
    • 重用
      开发框架一般层次清晰,不同开发人员开发时都会根据具体功能放倒相同的位置,加上配合相应的开发文档,代码重用会非常高,想要调用什么功能直接进对应的位置去查找相关函数,而不是每个开发人员各自编写一套相同的方法。
    • 高内聚(封装)
     框架中的功能会实现高内聚,开发人员将各种需要的功能封装在不同的层中,给大家调用,而大家在调用时不需要清楚这些方法里面是如何实现的,只需要关注输出的结果是否是自己想要的就可以了。
    • 规范
       框架开发时,必须根据严格执行代码开发规范要求,做好命名、注释、架构分层、编码、文档编写等规范要求。因为你开发出来的框架并不一定只有你自己在用,要让别人更加容易理解与掌握,这些内容是非常重要的。
    • 可扩展
       开发框架时必须要考虑可扩展性,当业务逻辑更加复杂、数量记录量爆增、并发量增大时,能否通过一些小的调整就能适应?还是需要将整个框架推倒重新开发?当然对于中小型项目框架,也不必考虑太多这些内容,当个人能力和经验足够时水到渠成,自然就会注意到很多开发细节。
    • 可维护
       成熟的框架,对于二次开发或现有功能的维护来说,操作上应该都是非常方便的。比如项目要添加、修改或删除一个字段或相关功能,只需要简单的操作,十来分钟或不用花太多的工夫就可以搞定。新增一个数据表和对应的功能,也可以快速的完成。功能的变动修改,不会对系统产生不利的影响。代码不存在硬编码等等,保证软件开发的生产效率和质量。
    • 协作开发
    有了开发框架,我们才能组织大大小小的团队更好的进行协作开发,成熟的框架将大大减轻项目开发的难度,加快开发速度,降低开发费用,减轻维护难度。
    • 通用性
      同一行业或领域的框架,功能都是大同小异的,不用做太大的改动就可以应用到类似的项目中。在框架中,我们一般都会实现一些同质化的基础功能,比如权限管理、角色管理、菜单管理、日志管理、异常处理......或该行业中所要使用到的通用功能,使框架能应用到某一行业或领域中,而不是只针对某公司某业务而设定(当然也肯定存在那些特定功能的应用框架,这只是非常少的特殊情况,不在我们的考虑范围)。

    六、当有人向您的服务器请求一个网址,会发生什么呢?

      当一个请求到达网站服务器,它会被传递到Django,视图找到实际上什么是被请求的。它是首先会拿到一个网页的地址,然后试图去弄清该做什么。这个部分是由Django的urlresolver(url解释器。一个网址的地址被就做URL,统一资源定位器)。它并不十分聪明,他接受一个模式列表,然后试图去匹配URL。Django从顶到底检查模式,如果有匹配上的,那么Django会将请求传递给相关的函数(称为视图)。
      想象一个邮递员拿着一封信。她沿着街区走下去,检查每一个房号与信件地址是否对应。如果匹配上了,她就把信投在哪里。这也是URL解释器的工作方式!
      在视图函数里做了很多有趣的事情:我们能在数据库中寻找到一些信息。如果用户要求修改数据呢?就像一封信里说,"请修改我的工作描述",视图将检查是否你允许它这么干,然后更新工作描述并发回一个消息:"做完了"。然后视图生成相应,并且Django能够发送给用户的web浏览器。

    参考文档:https://tutorial.djangogirls.org/zh/django/

          https://zhuanlan.zhihu.com/p/31076196

  • 相关阅读:
    经典线程同步总结 关键段 事件 互斥量 信号量
    寄存器与缓存的区别
    自动变量
    进程的阻塞和挂起的区别
    经典线程同步 信号量Semaphore
    热门智力题 过桥问题和倒水问题
    经典线程同步 互斥量Mutex
    解决面试题的思路
    java.util.LinkedHashMap cannot be cast to
    E11000 duplicate key error index
  • 原文地址:https://www.cnblogs.com/hwlong/p/9174712.html
Copyright © 2011-2022 走看看