DRF对settings的配置

本文详细介绍了如何在Django Rest Framework (DRF) 中配置默认schema、分页、渲染器、解析器、权限和认证。包括安装新依赖、调整默认设置以优化API接口体验和安全性。

DRF中对restframework配置

INSTALLED_APPS

INSTALLED_APPS = [
    'simpleui',
    'rest_framework', #新增
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework.authtoken',#drf自带得token认证  #新增
]

REST_FRAMEWORK配置

REST_FRAMEWORK = {
    # 'DEFAULT_SCHEMA_CLASS':"rest_framework.schemas.AutoSchema",#生成在线接口文档得配置,需要在总urls中配置路由
    'DEFAULT_SCHEMA_CLASS':"rest_framework.schemas.coreapi.AutoSchema",#等好用的接口文档配置,p配置这个需要把上面配置得路由去掉,换成别的

    'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.PageNumberPagination',#设置分页配置
    'PAGE_SIZE': 10,
    'DATETIME_FORMAT':'%Y-%m-%d %H:%M:%S',#接口中返回时间相关得字段
    'DEFAULT_RENDER_CLASSES':[ #设置用哪个render类
        'rest_framework.renders.JSONRenderer',
        'rest_framework.renders.BrowsablerApiRenderer',
    ],
    'DEFAULT_PARSER_CLASSES':[#解析request.data得方式
        'rest_framework.parsers.JSONParser',
        'rest_framework.parsers.FormParser',
        'rest_framework.parsers.MultiPartParser',
    ],
     'DEFAULT_PERMISSION_CLASSES': [#权限配置
        'rest_framework.permissions.IsAuthenticated',#要求用户登录
    #      IsAuthenticatedOrReadOnly,IsAuthenticated,IsAdminUser,AllowAny
 (第一个:登录得用户可以增删改查,不登录得用户可以查询,第二个:只有登录得用户才可以进行所有操作,3:只有is_staff=True得用户才可以进行操作,4:允许所有的请求.settings
 中得关于权限验证不写)
    ],
    'DEFAULT_AUTHENTICATION_CLASSES':[
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication',#如果加这个需要在INSTALLEN_APPS中添加token配置
    ],
    # 'URL_FIELD_NAME':"link",#默认是url
    'DEFAULT_THROTTLE_CLASSES': [
        'rest_framework.throttling.AnonRateThrottle',
        'rest_framework.throttling.UserRateThrottle',
    ],
    #3.1限流策略
    'DEFAULT_THROTTLE_RATES': {
        'user': '300/hour',    # 认证用户每小时300次
        'anon': '1/day',       # 未认证用户每天能访问1次
    },
}
### 配置 WebSocket 在 Django REST Framework (DRF) 为了在 DRF 项目中实现 WebSocket 功能,可以借助于 `Django Channels` 和 `Django Channels Rest Framework` 这两个库。前者扩展了 Django 的功能使其支持异步协议如 WebSocket;后者则提供了构建基于这些协议的 API 所需的功能。 #### 安装依赖 首先,在项目的虚拟环境中安装必要的 Python 包: ```bash pip install channels djangochannelsrestframework ``` 接着修改 `INSTALLED_APPS` 设置来加入新组件并指定 ASGI 应用入口: ```python # settings.py INSTALLED_APPS = [ ... "djangochannelsrestframework", ] ASGI_APPLICATION = 'your_project_name.asgi.application' ``` #### 创建消费者类 定义一个继承自 `AsyncWebsocketConsumer` 或者更高级别的 `GenericAsyncAPIConsumer` 来处理传入的消息事件流。这里展示的是使用 `GenericAsyncAPIConsumer` 实现的例子[^1]: ```python from djangochannelsrestframework import permissions from djangochannelsrestframework.generics import GenericAsyncAPIConsumer from .models import YourModel from .serializers import YourSerializer class ChatConsumer(GenericAsyncAPIConsumer): queryset = YourModel.objects.all() serializer_class = YourSerializer permission_classes = (permissions.IsAuthenticated,) async def connect(self): await self.accept() async def disconnect(self, close_code): pass @action() async def send_message(self, text=None, **kwargs): message_data = {"sender": self.scope["user"].id, "content": text} new_message = await self.create(message_data) await self.send_json(new_message) ``` 上述代码片段展示了如何创建一个简单的聊天室应用中的消息发送逻辑。当客户端连接到服务器时会触发 `connect()` 方法接受新的 WebSockets 连接,并且每当收到带有特定动作名称的数据包就会调用相应的方法(在这个例子中是 `send_message`)。最后通过 `create()` 函数保存一条记录至数据库并将结果返回给前端显示出来。 #### URL 路由设置 为了让应用程序知道哪些路径应该被哪个视图函数所处理,还需要编辑路由配置文件 (`routing.py`) 将其指向上面编写的 Consumer 类实例: ```python from django.urls import re_path from chat.consumers import ChatConsumer websocket_urlpatterns = [ re_path(r'^ws/chat/(?P<room_name>\w+)/$', ChatConsumer), ] ``` 此部分指定了任何匹配正则表达式的 WebSocket 请求都将转发给名为 `ChatConsumer` 的对象进行进一步处理。 #### 启动开发服务器 确保已经按照官方文档完成了所有其他必要步骤之后就可以运行命令启动服务端程序了: ```bash python manage.py runserver ``` 此时如果一切正常的话应当可以在浏览器控制台里看到类似这样的日志输出:“Starting development server at http://127.0.0.1:8000/”,这表明 WebSocket 已经成功集成到了现有的 DRF 架构之中[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值