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返回
- django_剖析
- django_
- django_搭建
- django_细节
- django_模板
- Django_模型
- django_学习笔记0816
- django_学习笔记0901
- django_学习笔记0903
- Django_学习笔记0916
- Django_学习问题汇总
- Django_静态资源配置
- Django_使用easyui
- Django_使用easyui
- Django_ 安装、创建、配置、admin使用(1)
- Django_"No module named urls" error for /admin/
- Django_分页设计和Ueditor配置、图文发布
- lynda.com教程之Learning Python and Django_手把手零基础搭建Django项目
- android开发——环境搭建
- 数组与指针的关系与区别
- django_细节
- C++对象模型之虚函数实现原理
- error C2471: 无法更新程序数据库
- django_剖析
- 用智能工作流和3D打印系统建设快速生产系统(RPS)的构想
- Linux Shell常用技巧(目录)
- Js window.document 的属性、方法和事件汇总
- 如何安装/升级Opatch
- C++开源学习-Ptypes
- 看图片 读故事:轻松理解数字签名和数字证书
- 在js中如何使用php数据
- bool findInt32(uint32_t key, int32_t *value)函数 =>个人理解!