Fork me on GitHub

新博客地址:voidy's blog

Python框架之Django学习笔记(四)

Posted on 2014-08-30 14:46  尛鱼  阅读(1541)  评论(4编辑  收藏  举报

第一个基于Django的页面:Hello World

  正如我们的第一个目标,创建一个网页,用来输出这个著名的示例信息:Hello world.

  第一个视图

  Hello world视图非常简单。 这些是完整的函数和导入声明,把它们输入到views.py文件:

1 from django.http import HttpResponse
2 
3 def hello(request):
4    return HttpResponse("Hello World!\nIt's my First django web!")

 这里主要讲的是: 一个视图就是Python的一个函数。这个函数第一个参数的类型是HttpRequest;它返回一个HttpResponse实例。为了使一个Python的函数成为一个Django可识别的视图,它必须满足这两个条件。

第一个URLConf

  现在,如果你再运行:python manage.py runserver,你还将看到Django的欢迎页面,而看不到我们刚才写的Hello world显示页面。 那是因为我们的mysite项目还对hello视图一无所知。我们需要通过一个详细描述的URL来显式的告诉它并且激活这个视图。 (继续我们刚才类似发布静态HTML文件的例子。现在我们已经创建了HTML文件,但还没有把它上传至服务器的目录。)为了绑定视图函数和URL,我们使用URLconf。

  URLconf 就像是 Django 所支撑网站的目录。 它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表。 你就是以这种方式告诉 Django,对于这个 URL 调用这段代码,对于那个 URL 调用那段代码。 例如,当用户访问/foo/时,调用视图函数foo_view(),这个视图函数存在于Python模块文件view.py中。

  前一章中执行 django-admin.py startproject 时,该脚本会自动为你建了一份 URLconf(即 urls.py 文件)。 默认的urls.py会像下面这个样子:

 1 from django.conf.urls import patterns, include, url
 2 
 3 from django.contrib import admin
 4 admin.autodiscover()
 5 
 6 urlpatterns = patterns('',
 7     # Examples:
 8     # url(r'^$', 'myfirstsite.views.home', name='home'),
 9     # url(r'^blog/', include('blog.urls')),
10 
11     url(r'^admin/', include(admin.site.urls)),
12 )

 

  让我们逐行解释一下代码:

  • 第1行导入django.conf.urls.defaults下的所有模块,它们是Django URLconf的基本构造。 这包含了一个patterns函数

  • 第11行调用 patterns() 函数并将返回结果保存到 urlpatterns 变量。

  当前应该注意是 urlpatterns 变量, Django 期望能从 ROOT_URLCONF 模块中找到它。 该变量定义了 URL 以及用于处理这些 URL 的代码之间的映射关系。 默认情况下,URLconf 所有内容都被注释起来了——Django 应用程序还是白版一块。

  如果想在URLconf中加入URL和view,只需增加映射URL模式和view功能的Python tuple即可. 这里演示如何添加view中hello功能.

1 from django.conf.urls.defaults import *
2 from mysite.views import hello
3 
4 urlpatterns = patterns('',
5     ('^hello/$', hello),
6 )

  这里需要做两处修改。

  • 首先,从模块 (在 Python 的 import 语法中, mysite/views.py 转译为 mysite.views ) 中引入了hello 视图。

  • 接下来,我们为urlpatterns加上一行: (‘^hello/$’, hello), 这行被称作URLpattern,它是一个Python的元组。元组中第一个元素是模式匹配字符串(正则表达式);第二个元素是那个模式将使用的视图函数。

  启动Django开发服务器来测试修改好的 URLconf, 运行命令行 python manage.py runserver 。 (如果你让它一直运行也可以,开发服务器会自动监测代码改动并自动重新载入,所以不需要手工重启) 开发服务器的地址是http://127.0.0.1:8000/ ,打开你的浏览器访问 http://127.0.0.1:8000/hello/ 。 你就可以看到输出结果了。 开发服务器将自动检测Python代码的更改来做必要的重新加载, 所以你不需要重启Server在代码更改之后。服务器运行地址`` http://127.0.0.1:8000/`` ,所以打开浏览器直接输入`` http://127.0.0.1:8000/hello/`` ,你将看到由你的Django视图输出的字符串。

  至此,第一个Django的web页面完成。