从发送Django请求到显示模板的过程

这次我们将解释在Django中处理请求的机制。
目标是大致理解Django官方文档中关于请求处理的内容。
使用于说明时的环境
Django版本:4.0.4
※ 今回の説明に必要なもののみ抜粋
test-project
L config
L settings.py
L urls.py
L app1
L views.py
L templates/
L test_url.html
Django处理请求的流程
1. 接收URL

首先,找到URL的配置文件。
从 http://127.0.0.1:8000/app1/test_url/ 接收到的 Django 将检查 URL 的配置是怎样的。
那么,在settings.py的ROOT_URLCONF中指定了“就算说要去查找,去哪里查找好呢?”
ROOT_URLCONF = 'config.urls'
在创建项目时,config是应用程序的名称。
這次的情況是指「當收到請求時,首先檢查config目錄中的urls.py文件!」。
在查找 urls.py 中,「app1/test_url/」这个网址被设置为什么样子呢?
Django首先会查找urlpatterns的内容。
from django.contrib import admin
from django.urls import path
from app1.views import TestView
urlpatterns = [
path('admin/', admin.site.urls),
path('app1/test_url/', TestView.as_view()), # ありましたね。
]
然后,我在第8行找到了app1/test_url/!
「哦,app1 / test_url / 找到了」加载并显示相应的视图。
我们发现`app1/test_url/`对应于`app1`目录下的`views.py`文件中的`TestView`类。
# ↑のソースコードを一部抜粋
from app1.views import TestView
urlpatterns = [
path('app1/test_url/', TestView.as_view()), # ありましたね。
]
于是,我们来看一下TestView类的内容,它是这样说的:“显示test_url.html”。
from django.shortcuts import render
from django.views import View
class TestView(View):
def get(self, request, *args, **kwargs):
return render(request, 'test_url.html') # 「test_url.htmlを表示せよ」

※ 虽然没写什么重要的东西,但test_url.html的源代码如下:
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>テストページ</title>
</head>
<body>
<h1>test_url.htmlを表示してます!</h1>
</body>
</html>
我分享这个经验是因为通过大致了解 Django 处理请求的流程,我能够在 URL 相关出现错误时进行故障排除。