需要库版本

django-filter 2.4.0
markdown
django 3.0.7
djangorestframework3.12.*

当使用Django REST framework(DRF)时,您可能需要修改一些配置以满足特定需求。以下是一些常见的配置选项:

  1. 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中,以便在项目中启用这些应用程序的功能。

  1. 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的行为。您可以根据项目的需求进行调整和自定义,以满足您的特定需求。例如,根据实际业务需求调整分页设置、权限设置、渲染器设置等。同时,全局设置也可以在每个视图中进行局部设置,以实现更细粒度的控制。

  1. 序列化器:定义用于序列化和反序列化数据的DRF序列化器。您可以创建自定义序列化器来控制API的输出和输入格式。

  2. 视图类:DRF的视图类决定了API的行为。您可以使用内置的视图类(如APIViewGenericAPIView)或创建自定义视图类来实现您的业务逻辑。

  3. 路由设置:定义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')),
]
  1. 认证和权限:根据您的应用需求,选择合适的认证类和权限类来保护您的API资源。

  2. 限流(节流):根据访问频率控制API的访问速率。

以上是一些常见的配置选项,您可以根据您的具体需求进行适当的修改。请注意,在修改配置时,务必仔细阅读DRF的文档,以确保正确地配置和使用框架的各种功能。