美文网首页
The Django Book 第三章 视图与URL配置

The Django Book 第三章 视图与URL配置

作者: Alex_Honnold | 来源:发表于2017-10-14 10:39 被阅读0次

本书网站链接

第一份视图(静态视图)
views.py

from django.http import HttpResponse
def hello(request):
    return HttpResponse("Hello world")

urls.py

from django.conf.urls.defaults import *
from mysite.views import hello
urlpatterns = patterns('',
    ('^hello/$', hello),
)

结果,网页显示:hello world

Django处理请求的流程

当你通过在浏览器里敲http://127.0.0.1:8000/hello/来访问Hello world消息得时候,Django在后台有些什么动作呢?
  所有均开始于setting文件。当你运行python manage.py runserver,脚本将在于manage.py同一个目录下查找名为setting.py的文件。这个文件包含了所有有关这个Django项目的配置信息,均大写: TEMPLATE_DIRS, DATABASE_NAME 等. 最重要的设置时ROOT_URLCONF,它将作为URLconf告诉Django在这个站点中那些Python的模块将被用到还记得什么时候django-admin.py startproject创建文件settings.py和urls.py吗?自动创建的settings.py包含一个ROOT_URLCONF配置用来指向自动产生的urls.py. 打开文件settings.py你将看到如下:
ROOT_URLCONF = 'mysite.urls'
  相对应的文件是mysite/urls.py当访问 URL /hello/ 时,Django 根据 ROOT_URLCONF 的设置装载URLconf 。 然后按顺序逐个匹配URLconf里的URLpatterns,直到找到一个匹配的。当找到这个匹配 的URLpatterns就调用相关联的view函数,并把HttpRequest 对象作为第一个参数。 (稍后再给出 HttpRequest 的更多信息) (我们将在后面看到HttpRequest的标准)正如我们在第一个视图例子里面看到的,一个视图功能必须返回一个HttpResponse。 一旦做完,Django将完成剩余的转换Python的对象到一个合适的带有HTTP头和body的Web Response,(例如,网页内容)。
总结一下:

  1. 进来的请求转入/hello/.
  2. Django通过在ROOT_URLCONF配置来决定根URLconf.
  3. Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目。
  4. 如果找到匹配,将调用相应的视图函数
  5. 视图函数返回一个HttpResponse
  6. Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来

第二份视图(动态视图)
views.py

from django.http import HttpResponse
import datetime
def current_datetime(request):
    now = datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" % now
    return HttpResponse(html)

urls.py

urlpatterns = patterns('',
    ('^time/$', current_datetime),
)

结果,网页显示:当前时间

第三份视图(动态URL)
urls.py

urlpatterns = patterns('',
    # ...
    (r'^time/plus/\d+/$', hours_ahead),  #一位或多位组成的数字
    (r'^time/plus/\d{1,2}/$', hours_ahead),   #一位或者二位组成的数字
    (r'^time/plus/(\d{1,2})/$', hours_ahead), #这里加了括号(),我们需要一个方法把它传递到视图函数里去,这样 我们只用一个视图函数就可以处理所有的时间段了。 
                                              #我们使用圆括号把参数在URL模式里标识 出来。 在这个例子中,我们想要把这些数字作为参数,用圆括号把 \d{1,2} 包围起来
    # ...
)
    #这里我们采用最后一个url模式

views.py

from django.http import Http404, HttpResponse
import datetime
def hours_ahead(request, offset):  #这里多了一个参数,就是上面括号的功能,捕获的值永远都是string类型
    try:
        offset = int(offset)
    except ValueError:
        raise Http404()
    dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
    html = "<html><body>In %s hour(s), it will be %s.</body></html>" % (offset, dt)
    return HttpResponse(html)

归纳:
了解urls.py views.py两个文件的调用关系(第一个视图);
views.py的动态内容返回(第二个视图);
urls模式里,动态的传递参数给views里的函数(第三个视图)。

后续学习掌握方向:
1.了解掌握urls.py高级内容
2.掌握python正则表达式

相关文章

  • The Django Book 第三章 视图与URL配置

    本书网站链接 第一份视图(静态视图)views.py urls.py 结果,网页显示:hello world Dj...

  • Django的路由系统

    官方文档:URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图...

  • [PPJ_17] RESTful接口测试脚本备份

    接前文:[1] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作[2] Django...

  • django | 03-添加皮肤

    首页视图函数 django 的开发流程。即 首先配置 URL,把 URL 和相应的视图函数绑定,一般写在具体应用的...

  • Django笔记05-URL与视图

    URL与视图 django 中将 url 规则和视图函数绑定在一起 URL  url 是用户访问网站资源的地址,包...

  • Django项目系统学习(二)

    Day3 配置url的小技巧 在Django项目目录下面的urls.py文件中,我们会进行url与视图函数的匹配,...

  • Django视图层

    Django视图 一、URL调度器 在工程目录下的urls.py对视图路由进行配置: 二、视图函数 一个视图函数,...

  • 视图view

    1.视图就是作为数据和前台显示的逻辑桥梁,主要是函数。python 函数变成django视图,需要url配置 ,d...

  • The Django Book 第八章 高级视图与url配置

    本书网站链接 随着 Django 应用变得复杂,它的 URLconf 也在增长,并且维护这些导入可能使得管理变麻烦...

  • django知识点二

    Django视图和URL配置 一、MTV模式 1、概述 Django的MTV模式本质上和MVC是一样的,也是为了各...

网友评论

      本文标题:The Django Book 第三章 视图与URL配置

      本文链接:https://www.haomeiwen.com/subject/ogjnyxtx.html