请求模块
一 、CBV源码分析
from django.shortcuts import render, HttpResponse
from django.views import View
class CBVTest(View):
def dispatch(self, request, *args, **kwargs):
pass
super().dispatch(request, *args, **kwargs)
pass
def get(self, request):
return render(request, 'cbv.html')
def post(self, request):
return HttpResponse('cbv post method')
<form action="/cbv/" method="post">
{% csrf_token %}
<input type="text" name="usr">
<button type="submit">提交</button>
</form>
from app import views
urlpatterns = [
url(r'^cbv/', views.CBVTest.as_view()),
]
二 、DRF安装与使用
2.1 安装
- 安装
drf
:pip3 install djangorestframework
settings.py
注册app
:INSTALLED_APPS = [..., 'rest_framework',]
- 基于
cbv
完成满足RSSTful
规范的接口
2.2 使用
from rest_framework.views import APIView
from rest_framework.response import Response
user_list = [{'id': 1, 'name': 'Bob'}, {'id': 2, 'name': 'Tom'}]
class Users(APIView):
def get(self, request, *args, **kwargs):
return Response({
'status': 0,
'msg': 'ok',
'results': user_list
})
def post(self, request, *args, **kwargs):
name = request.data.get('name')
id = len(user_list) + 1
user = {'id': id, 'name': name}
user_list.append(user)
return Response({
'status': '0',
'msg': 'ok',
'results': user
})
from app import views
urlpatterns = [
url(r'^users/', views.Users.as_view()),
]
三 、request源码分析
view = super(APIView, cls).as_view(**initkwargs)
return csrf_exempt(view)
request = self.initialize_request(request, *args, **kwargs)
self.initial(request, *args, **kwargs)
self.perform_authentication(request)
self.check_permissions(request)
self.check_throttles(request)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现