Django学习笔记二:结构分析

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,它们的大概关系如下图所示:

 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值