Django 视图
封面图
•
2025-10-19
•
Django教程
3
0
0
0
在 Django 中,**视图(views)** 是处理请求并返回响应的函数或类。它们是 Web 应用程序的核心部分,负责处理用户请求(如 GET、POST 等),执行业务逻辑,并返回相应的 HTML 页面、JSON 数据或其他类型的内容。 --- ## 📌 一、Django 视图的基本概念 ### 1. **什么是视图?** - 视图是一个 Python 函数或类,接收 HTTP 请求对象(`request`),并返回一个 HTTP 响应对象(`response`)。 - 它可以包含任意复杂的逻辑,比如查询数据库、验证表单、渲染模板等。 ### 2. **视图的作用** - 处理请求 - 执行业务逻辑 - 渲染模板 - 返回响应(HTML 页面、JSON、重定向等) --- ## 🧠 二、Django 视图的两种形式 ### ✅ 1. 函数视图(Function-based views) ```python from django.http import HttpResponse def hello(request): return HttpResponse("Hello, World!") ``` #### 示例:渲染模板 ```python from django.shortcuts import render def home(request): return render(request, 'home.html') ``` > `render()` 函数会自动查找模板文件(默认在 `templates/` 目录下)。 --- ### ✅ 2. 类视图(Class-based views) Django 提供了基于类的视图,可以更方便地组织代码。 ```python from django.views import View from django.http import HttpResponse class HelloView(View): def get(self, request): return HttpResponse("Hello from a class view!") ``` > 类视图支持 `get()`, `post()`, `put()`, `delete()` 等方法。 --- ## 🧩 三、常见视图函数和工具 | 函数/工具 | 说明 | |----------|------| | `render()` | 渲染模板并返回响应 | | `redirect()` | 重定向到另一个 URL | | `HttpResponse()` | 返回简单的文本响应 | | `JsonResponse()` | 返回 JSON 格式的响应 | | `get_object_or_404()` | 获取对象,否则返回 404 错误 | --- ## 🧩 四、示例:一个完整的视图 ### 示例 1:函数视图(显示文章列表) ```python from django.shortcuts import render from .models import Article def article_list(request): articles = Article.objects.all() return render(request, 'articles/list.html', {'articles': articles}) ``` ### 示例 2:类视图(显示文章详情) ```python from django.views import View from django.shortcuts import get_object_or_404, render from .models import Article class ArticleDetail(View): def get(self, request, pk): article = get_object_or_404(Article, id=pk) return render(request, 'articles/detail.html', {'article': article}) ``` --- ## 📦 五、如何将视图与 URL 映射? 在 `urls.py` 文件中: ```python from django.urls import path from . import views urlpatterns = [ path('hello/', views.hello), path('articles/<int:pk>/', views.ArticleDetail.as_view()), ] ``` --- ## ✅ 六、总结 | 内容 | 说明 | |------|------| | 视图 | 处理请求并返回响应 | | 函数视图 | 使用函数编写,简单直接 | | 类视图 | 更适合复杂逻辑,可继承复用 | | 渲染模板 | 使用 `render()` 函数 | | 重定向 | 使用 `redirect()` | | 返回 JSON | 使用 `JsonResponse()` | --- 如果你有具体的使用场景(例如:处理表单、分页、权限控制等),我可以为你提供更详细的示例! 需要我帮你写一个具体的视图例子吗?
上一篇:
Django 表单
标题录入,一次不能超过6条
返回顶部
留言
留言
评论