Django REST框架API快速入门与限制策略

0 下载量 68 浏览量 更新于2024-08-29 收藏 66KB PDF 举报
"Django rest framework工具包简单用法示例" Django Rest Framework(DRF)是一个强大的、灵活且易用的工具包,用于构建Web APIs。它建立在Django框架之上,提供了一系列用于简化API开发的功能。在本文中,我们将探讨如何利用DRF来实现特定的功能,包括访问限制和权限控制。 首先,为了使用DRF,我们需要在`settings.py`文件中的`INSTALLED_APPS`列表中注册它。如下所示: ```python INSTALLED_APPS = [ # ... 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app.apps.AppConfig', 'rest_framework', # 注册DRF ] ``` 接下来,我们需要定义URL配置来映射不同的视图。在`urls.py`文件中,可以创建三个视图的URL,分别用于身份验证、首页和订单页面: ```python from django.conf.urls import url from django.contrib import admin from app import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^auth/', views.AuthView.as_view()), # 验证 url(r'^index/', views.IndexView.as_view()), # 首页 url(r'^order/', views.OrderView.as_view()), # 订单 ] ``` 然后,我们来实现这些视图。以`auth`视图为例,我们可以创建一个基于DRF的API视图,用于处理身份验证请求。这通常涉及到自定义认证类,例如: ```python from rest_framework.views import APIView from rest_framework.request import Request from django.http import JsonResponse, HttpResponse from app.utils.commons import gen_token from app.utils.auth import LuffyAuthentication class AuthView(APIView): authentication_classes = [LuffyAuthentication] # 使用自定义的认证类 def post(self, request: Request): # 这里实现身份验证逻辑,比如检查用户名和密码 user = authenticate(request, username=request.data['username'], password=request.data['password']) if user is not None: # 登录成功,生成和返回token token = gen_token(user) return JsonResponse({'token': token}, status=200) else: return HttpResponse('Invalid credentials', status=401) ``` 对于访问限制,DRF提供了一些内置的限速类,如`RateThrottle`。我们可以根据需求定制限速策略。例如,限制匿名用户每分钟访问三次,登录用户每分钟访问六次,可以通过以下方式实现: ```python from rest_framework.throttling import AnonRateThrottle, UserRateThrottle class AnonymousThreePerMinuteThrottle(AnonRateThrottle): rate = '3/minute' class LoggedInSixPerMinuteThrottle(UserRateThrottle): rate = '6/minute' # 在视图中应用这些限速类 class IndexView(APIView): throttle_classes = [AnonymousThreePerMinuteThrottle] class OrderView(APIView): throttle_classes = [LoggedInSixPerMinuteThrottle] ``` 最后,确保在`settings.py`中配置了限速类: ```python REST_FRAMEWORK = { 'DEFAULT_THROTTLE_CLASSES': [ 'app.throttling.AnonymousThreePerMinuteThrottle', 'app.throttling.LoggedInSixPerMinuteThrottle', ], 'DEFAULT_THROTTLE_RATES': { 'anon': '3/minute', 'user': '6/minute', } } ``` 通过以上步骤,我们就能够使用Django Rest Framework创建一个具备访问控制和速率限制功能的API。DRF提供了许多其他高级特性,如序列化、权限管理、过滤器、分页等,可以帮助开发者构建更加复杂和健壮的API服务。