Django视图的类型
- Function-Based View(基于函数的视图)
基于函数的视图是Django最基本的视图类型,它是一个Python函数,接收一个HttpRequest对象作为它的第一个参数,处理请求并返回HttpResponse对象。
以下是一个基于函数的视图的示例:
from django.http import HttpResponse def welcome(request): return HttpResponse("Welcome to pidancode.com!")
- Class-Based View(基于类的视图)
基于类的视图是Django中较新且更强大的视图类型,它允许我们定义一个类,该类继承自Django视图类,然后通过重写类方法来处理请求。
以下是一个基于类的视图的示例:
from django.views import View from django.http import HttpResponse class WelcomeView(View): def get(self, request): return HttpResponse("Welcome to pidancode.com!")
与基于函数的视图不同,基于类的视图需要在routes中采用.as_view() 方法才能被调用:
from django.urls import path from .views import WelcomeView urlpatterns = [ path('', WelcomeView.as_view(), name='welcome') ]
- Generic View(通用视图)
通用视图是基于类的视图的一种变种,它是一组内置视图类,可用于处理常见的Web开发任务,例如列表视图、详细视图、表单视图等。
例如,Django提供了ListView视图,它可以很容易地呈现数据库模型的列表。以下是一个ListView视图的示例:
from django.views.generic import ListView from .models import Article class ArticleListView(ListView): model = Article template_name = 'article_list.html'
- API View(API视图)
API视图是一种特殊的视图类,它具有序列化、反序列化和基于响应请求。Django REST framework提供了一组内置API视图类,用于处理常见的API请求。
以下是一个Django REST framework内置API视图类的示例:
from rest_framework.views import APIView from rest_framework.response import Response class WelcomeAPIView(APIView): def get(self, request, format=None): return Response({"message": "Welcome to pidancode.com!"})
urlpatterns中的使用示例:
from django.urls import path from .views import WelcomeAPIView urlpatterns = [ path('', WelcomeAPIView.as_view(), name='welcome') ]
相关文章