Django 视图基础:了解网络应用程序的核心

Django 用户朋友们,大家好!今天我们将讨论 Django 如果您刚刚开始使用 Django,就会知道 View 有多重要。

视图是 Django 的大脑,负责处理用户请求并返回响应。 听起来很复杂? 别担心,这篇文章会让您轻松愉快地学习。 那么,让我们开始吧!

什么是 Django 视图?

Django 视图使用 网络应用程序中处理逻辑的部分当用户通过 URL 发送请求时,Views 负责接收请求、处理请求并返回相应的响应。 简而言之,Views 是决定网页内容的函数。

Django Views 기초 참고 이미지 - 로직 처리
(Django 视图基础知识参考图片 - 逻辑处理 )

Django 视图基础 - 创建功能视图

视图的最基本形式就是一个函数,让我们创建一个。

从 django.http 导入 HttpResponse

def hello_world(request):
    return HttpResponse("Hello, Django world!")

这个简单的功能就是 View。 要求 对象,并将 HttpResponse第一次。

代码评注

1. 从 django.http 导入 HttpResponse
  • 意义: Django 的 django.http 在模块中 HttpResponse 去上课
  • 说明HttpResponse是一个用于在 Django 中生成 HTTP 响应的类,可用于向客户端(如网络浏览器)返回文本、HTML、JSON 等。
2. def hello_world(request):
  • 意义hello_world定义一个名为
  • 说明视图函数:在 Django 中,视图函数是一个接收 HTTP 请求并返回 HTTP 响应的函数。 该函数使用 要求 对象作为参数。 要求 对象包含客户端发送的 HTTP 请求信息(如标头、cookie、GET/POST 数据等)。
3. return HttpResponse("Hello, Django world!")
  • 意义HttpResponse 对象并将其返回。
  • 说明该行返回一个 HTTP 响应,其中包含字符串 "Hello, Django world!"。该字符串将发送到客户端(如网络浏览器)并显示在屏幕上。
Django Views의 주요 유형과 기능
(Django 视图的主要类型和功能)

Django 视图基础--将 URL 与视图关联起来

创建视图后,需要将其与 URL 关联。 urls.py 试着在文件中写下这样的内容

from django.urls import path
从 .import views

urlpatterns = [
    path('hello/', views.hello_world, name='hello')、
]

现在 /hello/ 访问 URL 时,我们创建的视图应该可以正常工作。

代码评注

1. 从 django.urls 导入路径
  • 意义: Django 的 django.urls 在模块中  获取功能。
  • 说明 函数用于定义 URL 模式。该函数包含两个必需参数(URL 模式和视图函数)和一个可选参数(名称)。
2. 从 . import views
  • 意义:当前目录(或当前应用程序)的 views.py 从文件中导入所有内容。
  • 说明views.py 该文件包含视图函数(例如 hello_world) 已定义。您可以导入该文件,将 URL 与视图功能关联起来。
3. urlpatterns = [ ... ]
  • 意义定义 URL 模式的列表。
  • 说明Django 使用 urlpatterns将 URL 映射到视图函数。URL 会按照该列表中定义的顺序进行搜索,如果找到匹配的 URL 模式,就会执行相应的视图函数。
4. path('hello/', views.hello_world, name='hello')
  • 意义/hello/ URL 模式到 views.hello_world 连接查看功能。
  • 说明:
    • 你好表示 URL 模式。在这种情况下 /hello/将执行该视图函数。
    • views.hello_world指定要映射到此 URL 模式的视图功能。 views.py 文件中定义的 hello_world 调用函数。
    • 名称='你好给这个 URL 模式命名。该名称用于在模板或视图中动态生成 URL。例如 {% url 'hello' %}可以在模板中使用,例如
总体行为
  1. 当用户打开 /hello/ 连接到 URL。
  2. Django 使用 urlpatterns 遍历列表并使用 /hello/ 寻找模式。
  3. 如果找到匹配模式、 views.hello_world 运行视图功能。
  4. hello_world 视图函数是一个 HttpResponse("Hello, Django world!")的新值。
  5. 客户端(网络浏览器)会在屏幕上显示 "你好,Django 世界!"的信息。

Django 视图基础 - 渲染模板

如果您想返回 HTML 页面而不仅仅是文本怎么办?您可以使用 Django 的模板系统:

从 django.shortcuts 导入 render

def home(request):
    context = {'message': 'Welcome!'}
    return render(request, 'home.html', context)

该视图使用 home.html 渲染模板、 背景 将字典中的数据传递给模板。

代码评注

1. 从 django.shortcuts 导入 render
  • 意义: Django 的 django.shortcuts 在模块中 给予 获取功能。
  • 说明给予 函数是渲染模板并返回 HTTP 响应的便捷工具。 该函数接收三个参数
    1. 要求:HTTP 请求对象。
    2. 模板名称:要渲染的模板文件的路径。
    3. 背景 (可选):包含要传递给模板的数据的字典。
2. def home(request):
  • 意义首页定义一个名为
  • 说明该函数接收来自客户端的 HTTP 请求。要求),对其进行处理并返回 HTTP 响应。在 Django 中,所有视图函数都使用 要求 反对
3. context = {'message': 'Welcome!'}
  • 意义背景并创建一个名为 消息 按键 "欢迎光临.
  • 说明背景是一个字典,用于保存传递给模板的数据。 这些数据可在模板中动态使用。例如 {{ 信息 }}被用作模板中的变量。
4. return render(request, 'home.html', context)
  • 意义给予 函数来使用 home.html 渲染模板并在 HTTP 响应中返回结果。
  • 说明:
    • 要求:HTTP 请求对象。
    • home.html:要渲染的模板文件的路径。Django 使用 模板 目录,找到该文件。
    • 背景:字典,包含要传递给模板的数据。
总体行为
  1. 当用户打开 /home/ 连接到 URL。
  2. Django 使用 首页 运行视图功能。
  3. 首页 视图函数是一个 背景 创建字典、 消息 按键 "欢迎光临.
  4. 给予 函数是一个 home.html 渲染模板时 背景 传递数据
  5. 模板引擎使用 home.html 文件并进行处理、 {{ 信息 }} 部分 "欢迎光临以取代
  6. 最终渲染的 HTML 将发送到客户端并显示在屏幕上。

Django 视图基础 - 处理动态 URL 参数

如果您想从 URL 中动态获取一个值并对其进行处理,您可以这样做:

def greet_user(request, username):
    return HttpResponse(f "Hello, {username}!")

urls.py

path('greet//', views.greet_user, name='greet')、

现在 /greet/retract/你就会看到一条信息 "你好,哲秀!"

실제 View 작동 방식 시퀀스 다이어그램
(视图如何运行的顺序图)

Django 视图基础 - 处理 HTTP 方法

您可以在视图中处理各种 HTTP 方法(GET、POST 等):

从 django.views.decorators.http 导入 require_http_methods

@require_http_methods(["GET", "POST"])
def my_view(request):
    if request.method == 'GET':
        处理 # GET 请求
        return HttpResponse("已收到 GET 请求。")
    elif request.method == 'POST':处理 # POST 请求:
        处理 # POST 请求
        return HttpResponse("已收到 POST 请求")

该视图只接受 GET 和 POST 请求,并以不同的方式处理它们。

代码评注

1. 从 django.views.decorators.http 导入 require_http_methods
  • 意义: Django 的 django.views.decorators.http 在模块中 require_http_methods 导入装饰器
  • 说明require_http_methods是一个装饰器,它限制视图函数只能处理某些 HTTP 方法(GET、POST、PUT、DELETE 等)。如果请求使用了不允许的方法,则 405 不允许的方法 返回响应。
2. @require_http_methods(["GET", "POST"])
  • 意义我的视图 设置视图函数只接受 GET 和 POST 方法。
  • 说明该装饰器适用于视图函数、 ["获取"、"发布"] 只允许使用列表中指定的方法。如果请求使用了不同的方法(如 PUT 或 DELETE),则 405 不允许的方法 返回错误信息。
3. def my_view(request):
  • 意义我的视图定义一个名为
  • 说明该函数返回一个 HTTP 请求要求) 并返回相应的 HTTP 响应。在 Django 中,所有视图函数都以 要求 反对
4. 如果 request.method == 'GET':
  • 意义:检查请求方法是否为 GET。
  • 说明request.method表示当前请求的 HTTP 方法(GET、POST 等)。只有当请求是 GET 方法时,才会执行该条件语句。
5. return HttpResponse("The GET request was received.")
  • 意义返回包含 "收到 GET 请求 "信息的 HTTP 响应。
  • 说明HttpResponse是在 Django 中生成 HTTP 响应的类。 在本例中,它返回一个简单的文本响应。
6. elif request.method == 'POST':
  • 意义:检查请求方法是否为 POST。
  • 说明注意:只有当请求是 POST 方法时,才会执行此条件。
7. return HttpResponse("POST 请求已收到。")
  • 意义返回包含 "收到 POST 请求 "信息的 HTTP 响应。
  • 说明当收到 POST 请求时,返回该信息。
总体行为
  1. 如果客户是 我的视图 向视图函数发送 GET 或 POST 请求。
  2. @require_http_methods(["GET", "POST"]) 装饰器会检查请求方法是 GET 还是 POST。
    • 如果是允许的方法(GET、POST),则执行视图函数。
    • 如果不允许使用该方法(如 PUT、DELETE)、 405 不允许的方法 返回错误信息。
  3. 视图函数内部 request.method来处理 GET 或 POST 请求。
    • 对于 GET 请求:返回信息 "收到 GET 请求"。
    • 对于 POST 请求:返回信息 "我们收到了您的 POST 请求"。

Django 视图基础 - 与数据库交互

您可以从数据库获取数据并在 View 中使用:

from django.shortcuts import render
从 .models import Book

def book_list(request):
    books = Book.objects.all()
    return render(request, 'book_list.html', {'books': books})

该视图获取所有图书对象,并将它们传递给模板。

代码评注

  1. 从 django.shortcuts 导入 render
    • 从 Django 的快捷方式模块中导入 render 函数。
    • render 函数是一个方便的函数,它可以加载模板并返回一个包含上下文数据的 HttpResponse 对象。
  2. 从 .models import Book
    • 从当前应用程序的 models.py 文件中导入图书模型。
    • '.'表示当前目录。
  3. def book_list(request):
    • 定义一个名为 book_list 的视图函数。
    • 该函数以 HTTP 请求(request)为参数。
  4. books = Book.objects.all()
    • 从数据库中获取图书模型中的所有对象,并将其存储到 books 变量中。
    • 全部() 方法以查询集的形式返回模型中的所有记录。
  5. return render(request, 'book_list.html', {'books': books})
    • 使用 render 函数生成 HTTP 响应。
    • 第一个参数 要求是原始 HTTP 请求对象。
    • 第二个参数 book_list.html是要使用的模板文件的名称。
    • 第三个论点 {'书籍': books}是要传递给模板的上下文数据。在这里,我们传递的是以 "书籍 "为关键字的书籍查询集。

Django 视图基础 - 处理重定向

有时,您需要将用户重定向到不同的页面:

从 django.shortcuts 导入重定向

def redirect_view(request):
    return redirect('home') # 'home' 是 URL 名称

该视图会将用户重定向到名为 "主页 "的 URL。

代码评注

  1. 从 django.shortcuts 导入重定向
    • 从 Django 的快捷方式模块中导入重定向函数。
    • 重定向函数是一个方便的函数,用于将用户重定向到另一个页面。
  2. def redirect_view(request):
    • 定义一个名为 redirect_view 的视图函数。
    • 该函数以 HTTP 请求(request)为参数。
  3. return redirect('home')
    • 使用重定向功能将用户重定向到名为 "主页 "的 URL。
    • home "是 Django 的 URL 设置中定义的 URL 名称。
    • 该函数生成 HTTP 重定向响应。

总结 Django View 基础知识

到目前为止,我们已经介绍了 Django 视图的基础知识。 视图是 Django 应用程序的核心:处理用户请求、处理数据和返回响应都在视图中进行。

一开始可能看起来很复杂,但只要一步一个脚印,很快就能掌握。 坚持练习和实验。一旦掌握了 Django View,你的网络开发技能就会突飞猛进。

顺便提一下,Django View 的一个同样重要的概念是模型,对吗? Django 模型基础知识:轻松理解数据库结构的完整指南 职位,在此基础上更上一层楼!

术语表

  • 查看:处理用户请求并返回响应的 Python 函数
  • URLconf:将 URL 模式与视图关联的设置
  • HttpResponse:视图返回的响应对象
  • render():获取模板并将其作为 HttpResponse 对象返回的函数。
  • 动态 URL说明:如何在 URL 中包含变量并动态处理它们
  • HTTP 方法客户端向服务器发出请求的方式:GET、POST 等。
  • ORM对象关系映射(Object-Relational Mapping),一种可在 Django 中轻松使用数据库的工具

Django 视图,你掌握了吗?一旦掌握了 View,你就可以用 Django 构建任何东西。 继续学习和实践吧。祝您在 Django 的道路上一帆风顺!

테리 이모티콘
(快乐编码)

类似文章