python web框架django概述

Posted on 2007-09-15 12:28 lostpencil 阅读(1693) 评论(2)  编辑 收藏
起因:目前可以看到的所有介绍django的资料都是太详细,需要很久才能有一个整体的印象,本文意图是从整体上简单说下django的结构,方便学习者早点上手。

django是一个MVC(Model View Controller)模式的web开发框架。不过在这里它对应于MVC变成了MTV(Model Template View), Model主要是和数据库的表对应的,通过访问Model可以很容易的操作数据库;Template是不完全的html页面,它支持继承扩展等功能;View是一个控制器,也就是网站每个模块的逻辑部分。

一般网站的django结构(我一般画的图比较烂就不画图了):
主目录,都是创建工程时自动生成的一些东西,它包括如下东西:
  __init__.py   作用同于python模块内的init
  manage.py    一个脚本的接口,通过调用它对整个系统管理,增加一个模块,或者是手动更新数据库等等
  settings.py     在这里进行系统相关的设置
  urls.py           在这里用正则表达式的方式,将URL和View进行匹配。
一个关于结构的例子:比如你有一个简单的网站,有3个部分,一个是主页,一个是登陆,还有一个是产品。你首先创建一个主的project,然后可以在里面创建mainpage,login, product三个模块,通过主目录下面的urls.py将每个模块和相应的URL匹配。在每个模块下面会有自己的model和view.至于Template,你可以放在任何位置,只要在setting.py中指定好路径就可以了。

Model介绍
django通过Model文件直接帮定数据库的表,然后提供一系列的api对相应的Model对象操作,这样避免的自己写SQL语句,如果你不是数据库专家,它内部生成的SQL语句效率一般都比你写的高。 一个简单的例子:比如你想在数据库中建立一张表,你只需要在相应模块的models.py文件中加入,
from django.db import models

class xxxx(models.Model):
    name = models.CharField(maxlength=30)
    address = models.CharField(maxlength=50)
然后执行下脚本,就搞定了,然后你就可以通过这个class对象对数据库进行操作。

Template介绍
template实际就是一个html文件,但是不是一个完全合法html文件,它相当于c++里面的模板类,通过给他不同的参数,然后他就解析成不同的html文件,而且它也支持继承。一个Template B继承另一个Template A简单的说就是,B是A的扩展,可以在B中对A中的“block”处丰富化。template文件内的变量通过{{ xxx}}的方式定义,你只要在view.py中调用相应的函数给xxx指定值,就能得到一个完整的html文件。template也可以有逻辑控制,它通过{%  xxx  %}来定义,常见的逻辑控制都可以写在xxx的位置处。
{% for item in todo_list %}
    <p>{{ forloop.counter }}: {{ item }}</p>
{% endfor %}
(继承的例子比较占篇幅就不写了,反正到处都可以找到)

View介绍
view的作用就是接受一个request然后,对request进行处理,返回一个html页面或者是一个URL跳转等,主要就是根据网页的作用来编写逻辑处理了。一个例子:
from django.http import HttpResponse
import datetime

def current_datetime(request):
    now = datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" % now
    return HttpResponse(html)
一个打印当前时间的小view.py文件,当然这里你想干什么都可以的,只要没有人K你,:)

其他说明
前面说的只是django的一个大体结构,实际上每个部分都有一些高级运用,还有一些Middleware (功能已经很全面了),Caching (提高效率的好帮手)等
。django的口号是,一个星期就能搞定一个大中型网站(个人感觉熟练的话肯定没有问题),如果想进一步了解的话上www.djangoproject.com和www.djangobook.com,国内目前也有一些人翻译了一些资料可以参考。
学习前提:了解网站的原理+了解python的基础知识。




评论/回复

# re: python web框架django概述

2007-09-18 10:15 by jzhang
感觉这个View更像controller吧。

# re: python web框架django概述

2007-09-18 22:46 by lostpencil
对,这里的mtv分别对应mvc
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]