当前位置: 首页 > article >正文

Django 常用注解

@require_http_methods(["POST"])

  • @require_http_methods(["POST"]) 是 Django 提供的装饰器,确保该视图函数只能处理指定的 HTTP 方法(如 POST 请求)。
  • 如果客户端使用其他的 HTTP 方法(如 GET, PUT, DELETE),Django 会自动返回 HTTP 405 (Method Not Allowed) 错误。
  • 它的作用是简化对 HTTP 方法的限制,而不用手动在视图里检查 request.method

没有@require_http_methods注解,需要方法内部自己if request.method == 'POST':

import json
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt  # 如果你没有启用 CSRF token 可以加上这个装饰器, 但要注意安全性
def add_car(request):
    if request.method == 'POST':
        try:
            # 读取并解析 JSON 请求体
            data = json.loads(request.body.decode('utf-8'))
            
            # 从 JSON 数据中获取参数
            car_name = data.get('name')
            car_model = data.get('model')
            
            # 在这里可以处理接收到的数据,例如保存到数据库
            # Car.objects.create(name=car_name, model=car_model)

            return JsonResponse({'status': 'success', 'message': 'Car added successfully'})
        except json.JSONDecodeError:
            return JsonResponse({'status': 'error', 'message': 'Invalid JSON'}, status=400)
    else:
        return JsonResponse({'status': 'error', 'message': 'Invalid request method'}, status=405)

@csrf_exempt:

禁用视图的 CSRF 保护,不注释全局csrf中间件,使用此注解即可完成单个请求的csrf保护取消


http://www.kler.cn/news/324439.html

相关文章:

  • python的pyinstaller
  • InnoDB索引结构
  • 【分布式微服务云原生】8分钟掌握微服务通信的艺术:Dubbo与OpenFeign全面解析
  • MacOS上安装MiniConda的详细步骤
  • SVG 滤镜:探索图形设计的无限可能
  • 低代码可视化-UniApp二维码可视化-代码生成器
  • C#测试调用FreeSpire.PDFViewer浏览PDF文件
  • 浅谈C++之Redis缓存
  • 遥感图像变换检测实践上手(TensorRT+UNet)
  • 一文理解mysql 联合索引和各种SQL语句分析
  • 软考论文《论模型驱动架构设计方法及其应用》精选试读
  • Python邮件发送附件:怎么配置SMTP服务器?
  • Java 常用运算符简单总结
  • JS中的事件和DOM操作
  • 【表达式求值算法】拆解复杂问题:实现计算器
  • 17.第二阶段x86游戏实战2-线程发包和明文包
  • Python近红外光谱数据分析
  • 几个将ppt文件压缩变小的方法!
  • [CKA]CKA预约和考试
  • 产品包装检测系统源码分享
  • OpenGL ES简述(1)
  • 如何使用 WebRTC 获取摄像头视频
  • 组播基础-2-IGMP协议
  • ★ C++进阶篇 ★ map和set
  • 个人健康管理小程序(源码+参考文档+定制)
  • python中序列化和反序列化
  • 一步一步优化一套生成式语言模型系统
  • docker简介、安装、基础知识
  • 基于webComponents的纯原生前端框架
  • Xcode 16 上传AppStore遇到第三方库 bitcode 的问题