django_剖析

来源:互联网 发布:软件流程图画图工具 编辑:程序博客网 时间:2024/06/16 17:25

Django组件架构图



Django采用的是MTV(Model,Template,View)

对于一个Django项目的启动流程,和重要文件的作用,根据我的理解的记录一下

***重要文件的作用***

1.manage.py

 所有的命令基本全靠它发启动的,ayncdb,startapp,runserver啊

在runserver后,manage.py 就根据settings.py的配置开始运行

2.projectname/settings.py 

是全局的配置文件,

主要包括启动时的APP,定位用的命名空间,数据库相关的配置

3.projectname/urls.py 

是URL指向的控制器,起一个分发URL的作用

4.appname/urls.py 

也是一个控制器,起一个分发request链的作用,有些路径是逐步依靠 projectname/urls.py -> appname/urls.py 来定位实际模板的,

举个例子:在appaname/urls.py 中有这样一句:urlpatterns = patterns('',url(r'^$', archive),),就是说将所有与

r'^$'匹配的request链与archive这个函数绑定起来,archive函数在view.py中有定义,接收一个request参数

5.appname/views.py 

是urls.py分发函数的定义区域,定义了针对不同request的处理函数

这些处理函数就是将model与template绑定起来,返回一个HttpResponse对象

举个例子:

def archive(request):posts = BlogPost.objects.all()//取modelt = loader.get_template("archive.html")//取templatec = Context({'posts': posts})//将model包在dict对象中return HttpResponse(t.render(c))//渲染模板并返回HttpResponse对象
6.appname/models.py

定义了所有的class MModel(models.Model)对象提供给view.py使用,

转载请注名:http://blog.csdn.net/blacklaw0/article/details/8913972

注意:

1.MModel其实就是关系型数据的一种映射

2.在使用manage.py syncdb 时就是根据 models.py 中的模型来构建相关的structure的

而admin.site.register(A,B)这句就很明显了,将A,B对象注册到admin app中

admin是django功能强大的内置APP,方便管理后台数据

***启动顺序****

1.在启动manage.py runserver后,服务器根据projectname/settings.py 进行初始化,完成后开始等待客户进入了

2.客户进入后,传入一个request形如:http://localhost:8000/blog/2013/5/7/a-shit-book

3.django根据projectname/urls.py进行相关匹配,比如根据匹配指向的是appname/urls.py

4.django根据appname/urls.py 进行匹配,匹配到的是archive函数

5.django在view.py寻找archive并调用,archive函数创建了一个template和一个Contest({key,value}),这里value是一个定义在models.py中模型的一个实例

使用template渲染数据Context并返回一个HttpRequest对象:return HttpResponse(template.render(Contest))

6.django将response返回



















原创粉丝点击