关于django的一些理解

django是一个很重的web框架

django简介

首先django集成了MVC和ORM这些技术。有人说它严格遵循MVC的模式,但它和平时我们用的MVC很不同,它自已有一套MTV(model-view-template)的模式。

Django的主要目标是使得开发复杂的、数据库驱动的网站变得简单。Django注重组件的重用性和“可插拔性”,敏捷开发和DRY法则(Don‘t Repeat Yourself)。在Django中Python被普遍使用,甚至包括配置文件和数据模型。

一个完整的Web应用框架包括下面功能的支持

服务发布
URL分发
模板支持
数据库处理

django的特点

优点

  • 完美的官方文档
  • 全套的解决方案(比如:cache、session、feed、orm、geo、auth)
  • 强大的URL路由配置,Django让你可以设计出非常优雅的URL,在Django里你基本可以跟丑陋的GET参数说拜拜
  • 自助管理后台,admin interface是Django里比较吸引眼球的一项contrib,让你几乎不用写一行代码就拥有一个完整的后台管理界面

缺点(源自Django坚持自己造所有的轮子,整个系统相对封闭)

  • 系统紧耦合,如果你觉得Django内置的某项功能不是很好,想用喜欢的第三方库来代替是很难的,比如ORM、Template。要在Django里用SQLAlchemy或Mako几乎是不可能,即使打了一些补丁用上了也会让你觉得非常非常别扭
  • Django自带的ORM远不如SQLAlchemy强大,除了在Django这一亩三分地,SQLAlchemy是Python世界里事实上的ORM标准,其它框架都支持SQLAlchemy了,唯独Django仍然坚持自己的那一套。Django的开发人员对SQLAlchemy的支持也是有过讨论和尝试的,不过最终还是放弃了,估计是代价太高且跟Django其它的模块很难合到一块
  • Template功能比较弱,不能插入Python代码,要写复杂一点的逻辑需要另外用Python实现Tag或Filter。
  • URL配置虽然强大,但全部要手写高手和初识Django的人配出来的URL会有很大差异。
  • 让人纠结的auth模块,Django的auth跟其它模块结合紧密,功能也挺强的,就是做的有点过了,用户的数据库schema都给你定好了,这样问题就来了,比如很多网站要求email地址唯一,可schema里这个字段的值不是唯一的,纠结是必须的了。
  • Python文件做配置文件,而不是更常见的ini、xml或yaml等形式。这本身不是什么问题,可是因为理论上来说settings的值是能够动态的改变的(虽然大家不会这么干),但这不是最佳实践的体现。

组件

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

核心框架中还包括:

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

内置应用

Django 包含了很多应用在它的"contrib"包中,这些包括:

  • 一个可扩展的认证系统
  • 动态站点管理页面
  • 一组产生 RSS 和 Atom 的工具
  • 一个灵活的评论系统
  • 产生Google 站点地图 (Google Sitemaps)的工具
  • 防止跨站请求伪造(cross-site request forgery)的工具
  • 一套支持轻量级标记语言(Textile和Markdown)的模板库
  • 一套协助创建地理信息系统(GIS)的基础框架
时间: 2024-07-29 14:09:56

关于django的一些理解的相关文章

1、Django REST framework 理解

Web应用模式 1 .前后端不分离:在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与厚度那的耦合度很高. 这种应用模式比较合适纯网页应用,但是后端对接APP时,App可能并不需要后端返回一个HTML网页,二仅仅是数据本身,所以后端原本返回网页的接口不在适用前端APP应用,为了对接APP后端嗨需再开发一套接口2.前后端分离:在前后端分离的应用模式中,后端仅返回前端所需的数据,不在渲染HTML页面,不在控制前端的效果,只用前端

对django中间件的理解

1. 什么是中间件(Django)? 对Django而言,中间件就是继承自MiddlewareMixin(位于django.utils.deprecation模块下)的类,该类对请求(request)及响应(response)的过程按照规则执行相应的控制方法,达到访问控制,权限管理,请求认证,数据缓存等等效果. 在django2.x中,项目会默认开启以下中间件,通过查看这些中间件的源码可以得知, 基本上这些内置中间件都重写了基类的process_request(request, *args, *

在Django中使用Q()对象

转载于:  http://www.smallerpig.com/1000.html 问题 一般我们在Django程序中查询数据库操作都是在QuerySet里进行进行,例如下面代码: >>> q1 = Entry.objects.filter(headline__startswith="What") >>> q2 = q1.exclude(pub_date__gte=datetime.date.today()) >>> q3 = q1

Django基础笔记

django随记:Django URL配置原则:松耦合原则,松耦合是一个重要的保证互换性的软件开发方法.例如urls.py 是用来配置url的     views.py是用来配置视图函数的,二者之间是松耦合的!Django中时区的设置, 在Django中加入在/home/zhou中通过django-admin.py   startproject mysite创建一个mysite的应用此时在/home/zhou文件夹下会生成一个manage.py文件,同时会有一个mysite的文件夹.  mana

开始一个最简单的django项目

推荐使用ubuntu操作系统进行django,简单暴力方便. 安装django $sudo apt-get install pip $sudo pip install Django==1,6,1 首先需要创建一个项目 $django-admin.py startproject FirstSite python manage.py runserver 打开http://127.0.0.1:8000/  看到页面就表示django安装成功并且项目运行正常. 接下来创建一个应用 python mana

Python的Django框架完成一个完整的论坛(源码以及思路)

一个完整的论坛,登录.注册.发表.头像.点赞.评论.分页.阅读排行等 使用Django2,Python3.5 开发工具:Pycharm5 需要的知识:Python基础知识,Django原理的理解以及使用,HTML,CSS,JS,jQuery等前端知识的简单理解,对数据库的简单理解 需要的知识可以参考的我的CSDN博客:http://blog.csdn.net/qq_41144008 源码 1:http://www.cnblogs.com/xuyiqing/p/8274959.html 2:htt

Django 1.8_新手入门

内容 双系统下安装Django 新建项目 理解MVC控制模式 预告 学习views,url 安装django linux/ windows 安装python 安装python虚拟环境 安装django==1.8.13 安装数据库 默认自带SQLite, 该数据库无需配置. PostgreSQL, MySQL, Oracle 配置 见21章 新建项目 项目是Django实例的一系列设置.即自动生成一些代码, 包括数据据库配置,Django相关选项和应用程序相关的设置. django-admin s

django的下载安装与简单应用

Django下载安装与简单实例 Django官网下载页面 1.下载Django: pycharm中下载 pycham中装模块的地方安装 或界面下Terminal安装File | Settings | Project: tushu | Project Interpreter pip3下载 pip3 install django==1.11.9 -i http://xxxxxx 指定源 2.创建一个django project 创建项目 django-admin startproject mysit

OMserver自动化运维平台搭建及测试

本文基于<Python自动化运维  技术与最佳实践>第十三章内容"从零开始打造B/S自动化运维平台". 参考链接为作者刘天斯个人博客: https://blog.liuts.com/post/245/ https://blog.liuts.com/post/246/ https://github.com/yorkoliu/pyauto 平台简介:OMServer是本平台的名称.OMServer实现了一个集中式的Linux集群管理基础平台,提供了模块扩展的支持,可以随意添加集