Django是一个支持MVC结构的Web框架,实现的视图/数据/控制的分离
1.在Django中,一个Web工程主要有配置文件settings.py,URL映射urls.py以及数据文件models.py和视图文件views.py组成
2.还有一个重要的部分是HTML模版,它一般存放在某一个命名为的templates文件夹中,需要在settings.py中指定好它的路径
3.setting.py中的主要参数:
1)DEBUG = True,是否打开调试功能。它会在页面发生错误时,追踪堆栈打印详细错误信息,便于发现错误原因
2)DATABASE_XXX,配置远程数据库,Django会自动关联Models.py中的数据与配置数据库,您无需再建连接会话执行SQL语句等底层操作,这就是框架的好处把共用的部分都替您考虑好了,就等成坐亨其成吧:)
3)ROOT_URLCONF = 'djdemo.urls',指定URL映射文件的位置,这个会在您创建工程时自动生成,无需多操心
4)TEMPLATE_DIRS = ("/home/sinboy/program/djdemo/templates"),Html模版文件所在位置,您到时可以把所有的模版文件放置于 此,它相当于一个环境变量,这样在Views.py中引用模版的时候不用再写一长串绝对路径了
5)INSTALLED_APPS,工程中要运行的应用程序。一个工程可以包含多个应用程序,因此您最好在工程目录下为每一个应用程序创建一个独立的文件 夹存放models.py和views.py。比如,我创建了一个polls的应用程序,那么需要在内容中添加一行'djdemo.polls',这样能 让Web服务器引擎知道有哪些应用程序要加载
4.urls.py是一个URL映射表,即什么样的网址对应什么样的执行动作。比如urls中有如下映射定义:
urlpatterns = patterns('',
(r'^time/$','views.current_datetime'), 1)
(r'^time/(plus)/(/d{1,2})/$', 'views.hour_ahead'),) 2)
1)当中,前半部分是一个网址的正则表达式,如http://localhost:8000/time,后面是对应的Views.py中的函数或者叫方 法,即当遇到符合该规则的网址时,需要执行views.current_datetime这个动作。2)表达式也是类似,它代表的是 http://localhost:8000/time/plus/3。当用户输入一个网址,没有和规则当中的任何一个匹配时,就无法执行任何动作,出现 异常如上图所示
5.Veiws.py,代表的是视图,即返回用户什么样的页面。我们看一个简单的例子:
from django.http import HttpResponse
from django.template import Template,Context
import datetime
def current_datetime(request):
now = datetime.datetime.now()
t = Template("<html><body>It is now {{ current_date }}.</body></html>")
html = t.render(Context({'current_date': now}))
return HttpResponse(html)
这个例子就是当用户访问http://localhost:8000/time时,要返回的页面。current_datetime()是一个方法,它代 表一个执行动作,默认情况下把HttpRequest做为参数传递进来,然后返回一个当前时间的页面给用户。如果需要返回不同的页面,只需添加相应的动作 函数就可以了。
6.Models.py,用来定义数据,和Java中的JavaBean是一个概念。Django实现了Model和后台数据库的自动关联,封装数据库的访问细节,给我们带了方便。但是如果不了解其中的执行原理,就很难把各个部分搞清楚
7.Templates模版,用来定义Html页面减少重复内容,象编辑照片加个相框一样,这个相框就是一个模版
8.Django实现了MVC模型,现在我们只看到了Model和Vies,Control跑哪里去了?其实Django引擎本身充当了控制器Control,它们的大概关系如下图所示: