文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Python web 开发(二) 展开你的Django项目

Python web 开发(二) 展开你的Django项目

时间:2010-04-14  来源:kkboy_dyc

首先我们来解释一下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 = '''
<html>
<head><title>%s</title></head>
<body>
<h1>%s</h1><p>%s</p>
</body>
</html>
''' % (
'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中的详细解释:
http://docs.python.org/lib/module-re.html

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

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

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载