Django 的接客之道

本文介绍了Django处理HTTP请求的基本流程,包括如何通过URL绑定视图函数、编写视图函数来处理请求并生成HTTP响应。通过一个Hello World的例子详细讲解了视图函数的编写和URL配置,同时介绍了Django的模板系统,展示了如何使用模板来展示复杂内容。
摘要由CSDN通过智能技术生成

声明:此Django分类下的教程是追梦人物所有,本人写在此只是为了巩固复习使用

Django 处理 HTTP 请求

Web 应用的交互过程其实就是 HTTP 请求与响应的过程。无论是在 PC 端还是移动端,我们通常使用浏览器来上网,上网流程大致来说是这样的:

  1. 我们打开浏览器,在地址栏输入想访问的网址,比如 https://zmrenwu.com/(当然你也可能从收藏夹里直接打开网站,但本质上都是一样的)。
  2. 浏览器知道我们想要访问哪个网址后,它在后台帮我们做了很多事情。主要就是把我们的访问意图包装成一个 HTTP 请求,发给我们想要访问的网址所对应的服务器。通俗点说就是浏览器帮我们通知网站的服务器,说有人来访问你啦,访问的请求都写在 HTTP 报文里了,你按照要求处理后告诉我,我再帮你回应他!
  3. 服务器处理了HTTP 请求,然后生成一段 HTTP 响应给浏览器。浏览器解读这个响应,把相关的内容在浏览器里显示出来,于是我们就看到了网站的内容。比如你访问了我的博客主页 https://zmrenwu.com/,服务器接收到这个请求后就知道用户访问的是首页,首页显示的是全部文章列表,于是它从数据库里把文章数据取出来,生成一个写着这些数据的 HTML 文档,包装到 HTTP 响应里发给浏览器,浏览器解读这个响应,把 HTML 文档显示出来,我们就看到了文章列表的内容。

因此,django 作为一个 Web 框架,它的使命就是处理流程中的第二步。即接收浏览器发来的 HTTP 请求,返回相应的 HTTP 响应。于是引出这么几个问题:

django 如何接收 HTTP 请求?
django 如何处理这个 HTTP 请求?
django 如何生成 HTTP 响应?
对于如何处理这些问题,django 有其一套规定的机制。我们按照 django 的规定,就能开发出所需的功能。

django 的开发流程就是,写好处理 HTTP 请求和返回 HTTP 响应的视图函数,然后把视图函数绑定到相应的 URL 上。

Hello 视图函数

我们先以一个最简单的 Hello World 为例来看看 django 处理上述问题的机制是怎么样的。

绑定 URL 与视图函数

首先 django 需要知道当用户访问不同的网址时,应该如何处理这些不同的网址(即所说的路由)。django 的做法是把不同的网址对应的处理函数写在一个 urls.py 文件里,当用户访问某个网址时,django 就去会这个文件里找,如果找到这个网址,就会调用和它绑定在一起的处理函数(叫做视图函数)。

下面是具体的做法,首先在 blog 应用的目录下创建一个 urls.py 文件,这时你的目录看起来是这样:

> tree blog
blog
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│   ├── 0001_initial.py
│   └── __init__.py
├── models.py
├── tests.py
├── urls.py
└── views.py

在blog/urls.py 中写入这些代码:

from django.urls import path
 
from . import views
 
urlpatterns = [
    path('', views.index, name='index'),
]

我们首先从 django.urls导入了 path函数,又从当前目录下导入了 views模块。然后我们把网址和处理函数的关系写在了 urlpatterns 列表里。

绑定关系的写法是把网址和对应的处理函数作为参数传给 path 函数(第一个参数是网址,第二个参数是处理函数),另外我们还传递了另外一个参数 name,这个参数的值将作为处理函数index的别名,这在以后会用到。

注意这里我们的网址实际上是一个规则,django 会用这个规则去匹配用户实际输入的网址,如果匹配成功,就会调用其后面的视图函数做相应的处理。

比如说我们本地开发服务器的域名是 http://127.0.0.1:8000,那么当用户输入网址 http://127.0.0.1:8000 后,django 首先会把协议 http、域名 127.0.0.1 和端口号 8000 去掉,此时只剩下一个空字符串,而''的模式正是匹配一个空字符串,于是二者匹配,django 便会调用其对应的 views.index 函数。

注意⚠️

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值