Django 视图基础:了解网络应用程序的核心
Django 用户朋友们,大家好!今天我们将讨论 Django 如果您刚刚开始使用 Django,就会知道 View 有多重要。
视图是 Django 的大脑,负责处理用户请求并返回响应。 听起来很复杂? 别担心,这篇文章会让您轻松愉快地学习。 那么,让我们开始吧!
什么是 Django 视图?
Django 视图使用 网络应用程序中处理逻辑的部分当用户通过 URL 发送请求时,Views 负责接收请求、处理请求并返回相应的响应。 简而言之,Views 是决定网页内容的函数。

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 视图基础--将 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' %}可以在模板中使用,例如总体行为
- 当用户打开
/hello/连接到 URL。- Django 使用
urlpatterns遍历列表并使用/hello/寻找模式。- 如果找到匹配模式、
views.hello_world运行视图功能。hello_world视图函数是一个HttpResponse("Hello, Django world!")的新值。- 客户端(网络浏览器)会在屏幕上显示 "你好,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 响应的便捷工具。 该函数接收三个参数
要求:HTTP 请求对象。模板名称:要渲染的模板文件的路径。背景(可选):包含要传递给模板的数据的字典。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 使用模板目录,找到该文件。背景:字典,包含要传递给模板的数据。总体行为
- 当用户打开
/home/连接到 URL。- Django 使用
首页运行视图功能。首页视图函数是一个背景创建字典、消息按键"欢迎光临.给予函数是一个home.html渲染模板时背景传递数据- 模板引擎使用
home.html文件并进行处理、{{ 信息 }}部分"欢迎光临以取代- 最终渲染的 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/你就会看到一条信息 "你好,哲秀!"

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 请求时,返回该信息。
总体行为
- 如果客户是
我的视图向视图函数发送 GET 或 POST 请求。@require_http_methods(["GET", "POST"])装饰器会检查请求方法是 GET 还是 POST。
- 如果是允许的方法(GET、POST),则执行视图函数。
- 如果不允许使用该方法(如 PUT、DELETE)、
405 不允许的方法返回错误信息。- 视图函数内部
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})该视图获取所有图书对象,并将它们传递给模板。
代码评注
从 django.shortcuts 导入 render
- 从 Django 的快捷方式模块中导入 render 函数。
- render 函数是一个方便的函数,它可以加载模板并返回一个包含上下文数据的 HttpResponse 对象。
从 .models import Book
- 从当前应用程序的 models.py 文件中导入图书模型。
- '.'表示当前目录。
def book_list(request):
- 定义一个名为 book_list 的视图函数。
- 该函数以 HTTP 请求(request)为参数。
books = Book.objects.all()
- 从数据库中获取图书模型中的所有对象,并将其存储到 books 变量中。
全部()方法以查询集的形式返回模型中的所有记录。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。
代码评注
从 django.shortcuts 导入重定向
- 从 Django 的快捷方式模块中导入重定向函数。
- 重定向函数是一个方便的函数,用于将用户重定向到另一个页面。
def redirect_view(request):
- 定义一个名为 redirect_view 的视图函数。
- 该函数以 HTTP 请求(request)为参数。
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 的道路上一帆风顺!







