Django技术介绍一、简介Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。Django框架的核心组件有:1.用于创建模型的对象关系映射2.为最终用户设计的完美管理界面3.一流的URL设计4.设计者友好的模板语言5.缓存系统。在Django中,控制器接受用户输入的部分由框架自行处理,所以Django里更关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。它们各自的职责如下:层次职责模型(Model),即数据存取层处理与数据相关的所有事务:如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。模板(Template),即表现层处理与表现相关的决定:如何在页面或其他类型文档中进行显示。视图(View),即业务逻辑层存取模型及调取恰当模板的相关逻辑。模型与模板之间的桥梁。Django视图不处理用户输入,而仅仅决定要展现哪些数据给用户,而Django模板仅仅决定如何展现Django视图指定的数据。或者说,Django将MVC中的视图进一步分解为Django视图和Django模板两个部分,分别决定“展现哪些数据”和“如何展现”,使得Django的模板可以根据需要随时替换,而不仅仅限制于内置的模板。至于MVC控制器部分,由Django框架的URLconf来实现。URLconf机制是使用正则表达式匹配URL,然后调用合适的Python函数。框架把控制层给封装了,无非与数据交互这层都是数据库表的读,写,删除,更新的操作二、设计优势Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(DoNotRepeatYourself)原则。1.对象关系映射(ORM,object-relationalmapping):以Python类形式定义你的数据模型,ORM将模型与关系数据库连接起来,你将得到一个非常容易使用的数据库API,同时你也可以在Django中使用原始的SQL语句。2.URL分派:使用正则表达式匹配URL,你可以设计任意的URL,没有框架的特定限定。像你喜欢的一样灵活3.模版系统:使用Django强大而可扩展的模板语言,可以分隔设计、内容和Python代码。并且具有可继承性。4.表单处理:你可以方便的生成各种表单模型,实现表单的有效性检验。可以方便的从你定义的模型实例生成相应的表单。5.Cache系统:可以挂在内存缓冲或其它的框架实现超级缓冲--实现你所需要的粒度。6.会话(session),用户登录与权限检查,快速开发用户会话功能。7.国际化:内置国际化系统,方便开发出多种语言的网站。8.自动化的管理界面:不需要你花大量的工作来创建人员管理和更新内容。Django自带一个ADMINsite,类似于内容管理系统。三、工作原理1.用manage.pyrunserver启动Django服务器时就载入了在同一目录下的settings.py。该文件包含了项目中的配置信息,如前面讲的URLConf等,其中最重要的配置就是ROOT_URLCONF,它告诉Django哪个Python模块应该用作本站的URLConf,默认的是urls.py2.当访问url的时候,Django会根据ROOT_URLCONF的设置来装载URLConf。3.然后按顺序逐个匹配URLConf里的URLpatterns。如果找到则会调用相关联的视图函数,并把HttpRequest对象作为第一个参数(通常是request)4.最后该view函数负责返回一个HttpResponse对象。四、安装部署以python2.6,数据库为mysql,apache为例:1、安装pythonpython-2.6.2.msi2、安装Apachehttpd-2.2.17-win32-x86-openssl-0.9.8o.msi3、安装mod_pythonmod_python-3.3.1.win32-py2.6-apache2.2.exe4、安装mysqlmysql-essential-5.0.87-win32.msi5、安装python-mysql包MySQL-python-1.2.2.win32-py2.6.exe6、修改apache配置文件hpptd.conf7、修改django管理文件django.wsgi五、实际应用1),创建一个项目。在cmd模式下,打开一个目录,输入django-admin.pystartprojectmysite,就在当前目录下新建了一个项目mysite,mysite目录下生成了几个文件。manage.py:一种命令行工具,允许你以多种方式与该Django项目进行交互settings.py:该Django项目的设置或配置urls.py:Django项目的URL设置2),开启Django服务器。在cmd模式下,进入到当前的项目目录下mysite,输入pythonmanage.pyrunserver,就启动了服务器,并且服务器端口为8000。客户端就可以通过网页浏览器访问,就可以看到Django的欢迎页面了。3),创建视图在项目目录下创建文件views.py,文件内容如下:fromdjango.httpimportHttpResponseimportdatetimedefhello(request):returnHttpResponse(Helloworld)defcurrent_datetime(request):now=datetime.datetime.now()html=htmlbodyItisnow%s./body/html%nowreturnHttpResponse(html)一个简单的视图文件就创建完成了。4),创建urlconf在项目目录下的url.py文件中添加对视图views.py中函数的引用url匹配格式如urlpatterns表达式,如果有多个匹配,只需要在patterrns的圆括号中添加匹配项即可,一个匹配项有两部分组成,前半部分是正则表达式,后半部分是函数名称,通过正则表达式匹配url,如果url匹配成功就调用对应的函数。url.py内容如下:fromdjango.conf.urls.defaultsimport*frommysite.viewsimporthello,current_datetimeurlpatterns=patterns('',('^hello/$',hello),('^time/$',current_datetime),)5),查看客户端效果通过浏览器中,可以看到当前的日期和时间通过浏览器中,你可以看到Django视图输出的Hello,world到此,基本的Django调用关系就结束了。但是如果实际开发网站过程中不可避免的回用到模板和模型。这两个特性使用复杂一些,在此就不详细介绍,大家在使用过程中会慢慢了解。模板是一个文本,用于分离文档的表现形式和内容。模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签)。模板通常用于产生HTML,但是Django的模板也能产生任何基于文本格式的文档。Django模型是用Python代码形式表述的数据在数据库中的定义。对数据层来说它等同于CREATETABLE语句,只不过执行的是Python代码而不是SQL,而且还包含了比数据库字段定义更多的含义。Django用模型在后台执行SQL代码并把结果用Python的数据结构来描述。Django也使用模型来呈现SQL无法处理的高级概念。