PYTHON框架之DJANGO学习笔记(四)


 正如我们的第一个目标,创建一个网页,用来输出这个著名的示例信息:Hello world.
 
  第一个视图
 
  Hello world视图非常简单。 这些是完整的函数和导入声明,把它们输入到views.py文件:
 
1 from django.http import HttpResponse
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
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视图输出的字符串。

评论关闭