Chinaunix首页 | 论坛 | 博客
  • 博客访问: 754233
  • 博文数量: 26
  • 博客积分: 8255
  • 博客等级: 中将
  • 技术积分: 934
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-06 01:52
文章分类

全部博文(26)

文章存档

2012年(1)

2011年(8)

2010年(10)

2008年(7)

分类: Python/Ruby

2010-04-14 14:16:39

首先我们来解释一下Django中一些常用技术术语。

Django是一个典型的MVC WEB开发框架,但是在Django中我们把view视为controllor, 把template视为view。也就是变了个名字,其实意义还是相同的,如果各位读者还不明白MVC的含义,请主动GOOGLE一下。

在Django中,view用来检索和操作数据,但是通过template把数据展示给浏览者。它和MVC本质是相同的,但请大家不要搞混了术语的叫法。

当我们运行一个项目时,系统会生成一个默认欢迎页面,作为程序员我们第一个思考的问题就是如何建立我们自己的“欢迎页面”?为了实现这一点,我们需要创建一个“接入点”,并通过URL的形式指向我们的应用程序,当有人访问这个这个URL的时候,Django召唤特定的函数。

一个是view其实就是python函数,通过产生相应页面来回应页面请求。如果我们想要创建自己的主页,那么先要在项目中创建一个“应用程序”:
python manage.py startapp bookmarks

这个命令执行后同样会生成4个文件,抛开test.py文件,其余3个为:
【__init__.py】告诉python, bookmarks也是一个包
【view.py】这就是一个view文件
【models.py】 用来和数据库打交道的model

下面我们首先来编辑 view.py


from django.http import HttpResponse
def main_page(request):
output = '''

%s

%s

%s




''' % (
'Django Bookmarks',
'Welcome to Django Bookmarks',
'Where you can store and share bookmarks!'
)
return HttpResponse(output)


解释一下上述代码:
我们从django.http中引入了HttpResponse类,我们需要它是为了生成响应页面。
我们定义了一个python函数,并使用了参数request,这个参数将包括用户的输入和其他的信息,比如request.get request.post
然后我们用HTML构建了一个响应页面,包在httpresponse对象中并将它返回。

在输出这个页面之前,我们需要配置URL文件。

编辑url.py文件:

from django.conf.urls.defaults import *
from bookmarks.views import *
urlpatterns = patterns('',
(r'^$', main_page),
)


回顾先前讲到的URL文件,它随着我们创建项目而自动生成,这个文件中包含了应用程序的有效URL链接,把每一个URL都映射到一个Python函数。

URL的语法看上去并不陌生,它是一个典型的正则表达式类型。

首先我们看到,我们从 django.conf.urls.defaults 引入了所有,这个模块提供了定义URL的必要函数。
其次,我们从 bookmarks.views 引入了所有,这个是连接到我们的view文件所必须要做的
最后是patterns函数定义URL表,把r'^$' 映射到 main_page函数

这个正则表达式可能让你比较郁闷,它是一个包含了两个字符的原始字符串(raw string,我们用 r' '来表示原始字符串), ^ 和 $,如果python碰到了原始字符串,那么反斜杠和空白序列将保留在该字符串中。

在正则表达式中 ^表示字符串的开始,$表示字符串的结束,那么^$就表示不包含任何内容,也就是一个空字符串。如果我们想访问main page并把它作为根,那么我们不需要URL前包含任何东西。

正则在python中的详细解释:


这种URL管理方式给了我们很大的灵活性,它不同于传统的,通过文件来表示链接的PHP, (当然了,有些PHP框架已经改进了它的URL管理方式,也能通过函数来表示链接),也不同于mod_python中无法自动映射函数,给我们完全的自由去将URL和函数对应。

虽然我们的页面比较简单,但我们将来可以用templated来将其加工和修改,接下来我们需要研究的是数据库模块 database models 和如何存储及管理我们的数据。

阅读(4695) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~