Django中的路由可以对应一个函数,也可以对应一个类。

urls.py

python
复制代码
from django.urls import path from . import views urlpatterns = [ path('admin/', admin.site.urls), path('test.html', views.test, name='test'), # 对应函数,FBA path('login.html', views.Login.as_view(), name='login'), # 对应类,CBA ]

说明:URL命名和反向解析
在实际开发中,通常会给URL命名,以便在模板或视图中进行反向解析。可以使用 name 参数为URL命名。然后在模板或视图中可以使用 {% url 'test' %} 或 reverse('login') 进行反向解析。

views.py

python
复制代码
from django.http import HttpResponse from django.views import View # FBA def test(request): return HttpResponse('Hello Test') # CBA class Login(View): def dispatch(self, request, *args, **kwargs):#类似于装饰器的作用 print('before dispatch') obj = super(Login, self).dispatch(request, *args, **kwargs) print('after dispatch') return obj def get(self, request): # 查 return HttpResponse('Hello Get') def post(self, request): # 增 return HttpResponse('Hello Post') def put(self, request): # 改 return HttpResponse('Hello Put') def delete(self, request): # 删 return HttpResponse('Hello Delete')

说明:装饰器
在实际开发中,通常会使用“装饰器”来增加方法的功能
如:对视图类的get方法添加csrf_exempt装饰器,则在class前添加装饰器

python
复制代码
from django.utils.decorators import method_decorator from django.views.decorators.csrf import csrf_exempt @method_decorator(csrf_exempt, name='get') # 使用装饰器 class Login(View): ... def get(self, request): ...

需要注意的是,如果你打算开发RESTful API项目,
Django REST Framework(DRF)提供了更强大的类视图(如 APIView、GenericAPIView 等),可以更方便地处理API请求。

参考文章;

  1. django之装饰器的介绍
  2. django之DRF框架搭建API项目的步骤
分类: c/c++ 标签: django 视图 CBV FBV

评论

-- 评论已关闭 --

全部评论