返回介绍

Views and URLconfs

发布于 2025-02-27 00:22:12 字数 3830 浏览 0 评论 0 收藏 0

Django 处理 HTTP request 产生 response 的流程

在前面的介绍,我们有提到 Django 的 MTV 架构。其处理 request 的流程如下:

  1. 浏览器送出 HTTP request
  2. Django 依据 URL configuration 分配至对应的 View
  3. View 进行资料库的操作或其他运算,并回传 HttpResponse 物件
  4. 浏览器依据 HTTP response 显示网页画面

这一章,我们将透过 Hello World 范例 ,瞭解 Django 如何处理一个 request 的流程。

Django Views

Django view 其实是一个 function, 处理 HttpRequest 物件,并回传 HttpResponse 物件 ,大致说明如下:

  • 会收到 HttpRequest 参数: Django 从网页接收到 request 后,会将 request 中的资讯封装产生一个 HttpRequest 物件,并当成第一个参数,传入对应的 view function。
  • 需要回传 HttpResponse 物件: HttpResponse 物件裡面包含:
    • HttpResponse.content
    • HttpResponse.status_code …等

建立第一个 View

首先建立一个名为 hello_world 的 view。

trips/views.py 输入下列程式码:

# trips/views.py

from django.http import HttpResponse

def hello_world(request):
    return HttpResponse("Hello World!")

以上程式在做的事就是:

  1. django.http 模组中引用 HttpResponse 类别
  2. 宣告 hello_world 这个 view
  3. hello_world 被呼叫时,回传包含字串 Hello World!HttpResponse 物件。

Django URL 设定

最后,Django 需要知道 URL 与 view 的对应关係

例如:

有人浏览 http://127.0.0.1:8000/hello/ 时 , hello_world() 这个 view function 需要被执行。

而这个对应关係就是 URL conf (URL configuration)。

URL Conf

  • 通常定义在 urls.py
  • 是一连串的规则 (URL patterns)
  • Django 收到 request 时,会一一比对 URL conf 中的规则,决定要执行哪个 view function

现在我们来设定 Hello World 范例的 URL conf。

首先打开 mysite/urls.py ,先 import 刚刚写的 view function,然后在 urlpatterns 中加入下面这行:

url(r'^hello/$', hello_world),

现在 mysite/urls.py 的内容应该会像下面这样:

# mysite/urls.py

from django.conf.urls import include, url
from django.contrib import admin
# Import view functions from trips app.
from trips.views import hello_world

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^hello/$', hello_world),
]

以上程式透过 url() function 传入两个参数 regex , view

url(regex, view)
  • regex -- 定义的 URL 规则
    • 规则以 regular expression(正规表示式)来表达
    • r'^hello/$' 代表的是 hello/ 这种 URL
  • view -- 对应的 view function
    • 指的是 hello_world 这个 view

测试 Hello World

现在启动你的 web server。 (如果刚刚没关闭的话,通常 Django 会在你修改程式码后,自动重新启动 web server)

(djangogirls_venv) ~/djangogirls/mysite$ python manage.py runserver

在浏览器输入 http://127.0.0.1:8000/hello/ ,你会看到网页显示我们在 HttpResponse 传入的文字 Hello World!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文