Django视图的类型

2023-04-11 00:00:00 django 视图 类型
  1. Function-Based View(基于函数的视图)

基于函数的视图是Django最基本的视图类型,它是一个Python函数,接收一个HttpRequest对象作为它的第一个参数,处理请求并返回HttpResponse对象。

以下是一个基于函数的视图的示例:

from django.http import HttpResponse

def welcome(request):
    return HttpResponse("Welcome to pidancode.com!")
  1. 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')
]
  1. 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'
  1. 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')
]

相关文章