Django REST framework 使用,前后端分离
需要库版本
django-filter 2.4.0
markdown
django 3.0.7
djangorestframework3.12.*
当使用Django REST framework(DRF)时,您可能需要修改一些配置以满足特定需求。以下是一些常见的配置选项:
INSTALLED_APPS
:确保在INSTALLED_APPS
中包含'rest_framework'
。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'rest_framework.authtoken',
]
这里列出的是Django项目中的INSTALLED_APPS
配置,它是一个包含字符串的列表,用于指定您在项目中启用的Django应用程序。
现在我来逐个解释这些应用程序的含义:
1.1. django.contrib.admin
: 这是Django自带的管理后台应用程序,它允许您通过简单的界面管理数据库中的数据模型。
1.2. django.contrib.auth
: 这是Django自带的认证系统应用程序,它提供了用户认证、权限管理和用户组功能等。
1.3. django.contrib.contenttypes
: 这是Django自带的内容类型框架应用程序,它允许您对模型的内容类型进行跟踪和管理。
1.4. django.contrib.sessions
: 这是Django自带的会话管理应用程序,它允许您在Web应用程序中管理用户会话。
1.5. django.contrib.messages
: 这是Django自带的消息传递应用程序,它允许您在Web应用程序中向用户发送消息。
1.6. django.contrib.staticfiles
: 这是Django自带的静态文件管理应用程序,它允许您在项目中管理和提供静态文件,如CSS、JavaScript和图像等。
1.7. rest_framework
: 这是Django REST framework(DRF)应用程序,它是一个功能强大的库,用于构建RESTful API。
1.8. rest_framework.authtoken
: 这是Django REST framework提供的身份验证令牌应用程序,它允许您使用TokenAuthentication进行用户身份验证。
在您的Django项目中,通过将这些应用程序添加到INSTALLED_APPS
配置中,您可以启用并使用这些功能。请注意,如果您在项目中使用了其他第三方应用程序,也需要将它们添加到INSTALLED_APPS
中,以便在项目中启用这些应用程序的功能。
REST_FRAMEWORK
设置:通过修改REST_FRAMEWORK
字典来自定义DRF的行为。您可以在Django的设置文件(例如settings.py)中添加以下配置选项:
好的,下面是一个完整的REST_FRAMEWORK
设置块,包括分页(pagination)相关的配置:
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
'PAGE_SIZE': 50, # 每页返回的数据量,设置为50
'PAGE_QUERY_PARAM': 'page', # 指定页码的查询参数名称,默认为'page'
'MAX_PAGE_SIZE': 100, # 每页返回的最大数据量,防止恶意请求导致返回过多的数据,设置为100
'PAGINATE_BY_PARAM': 'page_size', # 指定每页数据量的查询参数,默认为None
'PAGINATE_BY': 20, # 为每个视图设置每页的默认数据量,设置为20
'DATETIME_FORMAT': '%Y-%m-%d %H:%M:%S', # 添加日期时间格式,设置为'年-月-日 时:分:秒'
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.SessionAuthentication', # 使用SessionAuthentication进行身份验证
'rest_framework.authentication.BasicAuthentication', # 使用BasicAuthentication进行身份验证
'rest_framework.authentication.TokenAuthentication' # 使用TokenAuthentication进行身份验证
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated', # 全局设置,需要用户进行身份验证才能访问API
],
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer', # 使用JSONRenderer渲染数据
'rest_framework.renderers.BrowsableAPIRenderer' # 使用BrowsableAPIRenderer渲染数据
],
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.JSONParser', # 使用JSONParser解析请求数据
'rest_framework.renderers.FormParser', # 使用FormParser解析表单数据
'rest_framework.renderers.MultiPartParser' # 使用MultiPartParser解析多部分表单数据
],
'DEFAULT_THROTTLE_RATES': {
'anon': '100/day', # 未认证用户的访问速率限制为100次/天
'user': '1000/day', # 已认证用户的访问速率限制为1000次/天
},
}
这个设置块包含了一些常见的配置选项,其中关于分页的选项有:
PAGE_SIZE
:每页返回的数据量,默认为10。PAGE_QUERY_PARAM
:指定页码的查询参数名称,默认为'page'
。MAX_PAGE_SIZE
:每页返回的最大数据量,默认为100。PAGINATE_BY_PARAM
:指定每页数据量的查询参数,默认为None
,即不启用该功能。PAGINATE_BY
:为每个视图设置每页的默认数据量,默认为20。
上述配置是Django REST framework的全局设置,它们会影响到整个API的行为。您可以根据项目的需求进行调整和自定义,以满足您的特定需求。例如,根据实际业务需求调整分页设置、权限设置、渲染器设置等。同时,全局设置也可以在每个视图中进行局部设置,以实现更细粒度的控制。
-
序列化器:定义用于序列化和反序列化数据的DRF序列化器。您可以创建自定义序列化器来控制API的输出和输入格式。
-
视图类:DRF的视图类决定了API的行为。您可以使用内置的视图类(如
APIView
、GenericAPIView
)或创建自定义视图类来实现您的业务逻辑。 -
路由设置:定义API的URL路由。使用DRF的内置路由器或Django的URL配置来将视图类映射到特定的URL。
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api-auth/', include('rest_framework.urls')),
]
-
认证和权限:根据您的应用需求,选择合适的认证类和权限类来保护您的API资源。
-
限流(节流):根据访问频率控制API的访问速率。
以上是一些常见的配置选项,您可以根据您的具体需求进行适当的修改。请注意,在修改配置时,务必仔细阅读DRF的文档,以确保正确地配置和使用框架的各种功能。
本文作者: 永生
本文链接: https://www.yys.zone/detail/?id=288
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
评论列表 (0 条评论)