Django 学习笔记(第1篇)|请求篇:理解 request 对象,前端传参、后端接收

大家好,这是我 Django 学习日记的第一篇。作为正在学习前后端分离的开发者,我发现 ** 请求(request)** 是绕不开、也最容易混淆的知识点。

这篇我就把自己学到的、用到的 request 全部整理出来,讲清楚 request 到底是什么、有哪些参数、分别怎么用,适合和我一样正在入门的同学看。

一、request 到底是什么?

简单一句话:request 是前端传给后端的所有信息的集合。

可以把它理解成一个快递包裹

  • 里面有前端发过来的数据
  • 有请求方式(GET/POST/PUT/DELETE)
  • 有请求头(token、设备信息)
  • 有客户端 IP、请求路径等

只要前端发起请求,Django 就会把所有内容打包成一个 request 对象,自动传给视图。

不管是函数视图还是 DRF 的 APIView,第一个参数永远是 request:

python

# 函数视图 def demo_view(request): pass # DRF 类视图 class DemoView(APIView): def post(self, request): pass

request 是前后端交互的入口,也是后端开发的起点。


二、request 最常用、最核心的属性

下面这些是我做小程序时每天都在用的属性,建议直接记牢。

1. request.method —— 请求方式

作用:告诉后端,前端这次请求想干什么。

常见值:

  • GET:查询、获取数据(列表、详情、搜索)
  • POST:提交、新增数据(登录、注册、上传)
  • PUT:修改数据
  • DELETE:删除数据

(上面是一些常用请求,并非所有请求)

示例:

python

运行

if request.method == 'GET': return Response({"msg": "查询操作"}) if request.method == 'POST': return Response({"msg": "提交操作"})

2. request.data —— 接收前端 JSON 数据(最重要)

这是前后端分离、小程序开发必用的属性。

前端(小程序 /axios)传 JSON:

json

{ "phone": "13800138000", "password": "123456" }

后端接收:

python

运行

phone = request.data.get('phone') password = request.data.get('password')

适用场景:

  • 登录、注册
  • 提交表单
  • 上传图片
  • 所有 JSON 格式参数

注意:只有 DRF(Django REST Framework)才有 request.data。


3. request.query_params —— 接收 GET 查询参数

前端在 URL 后面带参数:

plaintext

http://127.0.0.1:8000/api/list/?page=1&size=10&keyword=茶叶 

后端获取:

python

page = request.query_params.get('page') size = request.query_params.get('size') keyword = request.query_params.get('keyword')

适用场景:

  • 列表分页
  • 筛选
  • 搜索
  • 查询条件

4. request.headers —— 请求头

前端在请求头里带信息,比如 token:

js

header: { 'token': 'abcd1234xyz', 'content-type': 'application/json' }

后端获取:

python

运行

token = request.headers.get('token')

常用场景:

  • 用户登录验证
  • 权限判断
  • 设备标识

5. request.path —— 当前请求路径

python

运行

print(request.path) # 输出示例:/api/farmer/login/ 

可以用来做日志、权限、接口判断。


6. request.META —— 客户端原始信息

最常用的是获取用户 IP

python

运行

ip = request.META.get('REMOTE_ADDR')

三、原生 Django VS DRF 的 request 区别(必看)

这是我一开始最容易搞混的地方:

原生 Django(不使用 DRF)

  • request.GET:获取 GET 参数
  • request.POST:获取表单参数
  • 不能直接读取 JSON

DRF(前后端分离)

  • request.data:统一接收 JSON、表单、文件                                                      (eg:serializer = UserSerializer(data=request.data))
  • request.query_params:获取 URL 查询参数
  • 更适合小程序、Vue、React 等前端项目.

补充:给序列化器传参时,前端提交的核心数据用 data=request.data;若需传递额外参数(如请求者信息、当前用户),需用 context={"request": request},序列化器中通过 self.context.get("request") 获取。


四、最实用总结:前端怎么传,后端怎么接?

表格

前端传参方式后端获取方式典型场景
GET 查询参数request.query_params列表、分页、搜索
POST JSONrequest.data登录、注册、提交
请求头 tokenrequest.headers登录验证
文件上传request.FILES / request.data图片识别、上传

五、实战小例子:登录接口

前端(小程序):

js

wx.request({ url: 'http://127.0.0.1:8000/api/farmer/login/', method: 'POST', data: { phone: '13800138000', password: '123456' } })

后端(Django DRF):

python

运行

from rest_framework.views import APIView from rest_framework.response import Response class LoginView(APIView): def post(self, request): # 从 request 中获取参数 phone = request.data.get('phone') pwd = request.data.get('password') # 简单判断 if not phone or not pwd: return Response({"msg": "手机号或密码不能为空"}, status=400) return Response({ "code": 200, "msg": "登录成功", "data": {"phone": phone} })

六、本篇学习小结

  1. request 是前端传给后端的所有信息
  2. 做小程序 / 前后端分离,重点掌握:
    • request.method 请求方式
    • request.data 接收 JSON
    • request.query_params 接收 GET 参数
    • request.headers 请求头
  3. GET 用来查,POST 用来提交
  4. 所有前端参数,都在 request 里面

这就是我第一篇 Django 学习日记,如有缺漏或错误,欢迎指正!!!

下一篇我会继续整理路由 urls.py 的知识点,看看请求是怎么找到对应视图的~

Read more

【OpenClaw企业级智能体实战】第01篇:从零搭建你的第一个AI员工(原理+算法+完整代码+避坑指南)

【OpenClaw企业级智能体实战】第01篇:从零搭建你的第一个AI员工(原理+算法+完整代码+避坑指南)

摘要:随着AI从“对话时代”迈入“执行时代”,OpenClaw作为开源智能体框架,正在重塑人机协作模式——它不再是被动响应的工具,而是能主动执行任务的“AI员工”。本文基于真实技术原理与实操场景,从背景概念切入,拆解OpenClaw“感知-决策-执行”的核心逻辑,详解算法组件构建思路,并提供从零到一的完整实操流程(含可直接运行的Python代码)。内容兼顾新手入门与进阶提升,强调安全隔离部署原则,避开技术术语堆砌,聚焦实用价值。读者可通过本文掌握OpenClaw基础部署、自定义技能开发、记忆模块集成等核心能力,快速落地自动化办公、信息整理等实际场景,真正体验“低成本、高效率”的AI生产力革命。全文严格遵循真实性原则,无捏造案例与夸大描述,所有代码均经过实测验证。 优质专栏欢迎订阅! 【OpenClaw从入门到精通】【DeepSeek深度应用】【Python高阶开发:AI自动化与数据工程实战】 【YOLOv11工业级实战】【机器视觉:C# + HALCON】【大模型微调实战:平民级微调技术全解】 【人工智能之深度学习】【AI 赋能:Python 人工智能应用实战】

企业级招聘数据采集实战:基于 Bright Data AI Studio 的自动化爬虫方案

企业级招聘数据采集实战:基于 Bright Data AI Studio 的自动化爬虫方案

🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 一、 引言 二、Bright Data AI Studio 概览 2.1 AI Studio 是什么 2.2 AI Studio 的核心能力拆解 2.3 为什么说 AI Studio 更适合企业级场景 三、实战部分 3.1 实战目标与采集场景说明 3.2 准备工作 3.3 采集数据 3.4 扩展采集任务

小白也能玩 OpenClaw?ToDesk AI桌面助手ToClaw 把门槛打到了零

小白也能玩 OpenClaw?ToDesk AI桌面助手ToClaw 把门槛打到了零

一、开篇 最近"小龙虾"彻底火出圈了。打开抖音、刷刷小红书,满屏都是 OpenClaw 的教程、测评和安装实录。更夸张的是,有人专门上门帮人部署,甚至有公司门口排起了长队——就为了装一只"龙虾"。 这波热度不亚于当年 ChatGPT 刚出来的时候。但热闹背后,有一个问题没人说清楚:这么多人在排队,到底在排什么?排的是环境配置、是服务器、是 API Key、是一堆看不懂的命令行。原生 OpenClaw 能力确实强,但它本质上是一个开源框架,想真正跑起来,你得先过技术这关。对普通用户来说,光是部署这一步,就足够劝退了。 所以问题来了——龙虾这么香,普通人就真的没办法吃到吗? 还真不一定。ToDesk 悄悄做了一件事,把这只龙虾"