You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telegram机器人Webhook发送空POST请求问题排查(Django环境)

解决Telegram Webhook在Django中无法获取Payload的问题

我之前刚好踩过这个坑!你遇到的问题根本不是Telegram配置的问题,而是Telegram发送Webhook请求的格式和普通表单POST不一样——它是用JSON格式的请求体来传递数据,而Django的request.POST只会解析application/x-www-form-urlencoded或multipart/form-data类型的请求体,所以自然拿不到内容。

具体解决步骤:

不要用request.POST,直接读取请求体的原始内容并解析成JSON,修改后的代码如下:

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

@csrf_exempt
def webhook(request):
    print(request.get_full_path())
    if request.method == 'POST':
        # 读取并解析Telegram发送的JSON payload
        try:
            payload = json.loads(request.body)
            print("Received Telegram payload:", payload)
        except json.JSONDecodeError:
            print("Invalid JSON payload received")
    return HttpResponse("OK")

额外验证小技巧:

你可以先打印一下请求的Content-Type,确认Telegram的请求格式:

print("Request Content-Type:", request.content_type)

正常情况下应该会输出application/json,这也能佐证我们的判断。

另外,你自己发送的POST请求应该是表单编码格式,所以request.POST能拿到数据,这和Telegram的请求不是一回事,所以之前的测试结果是正常的~

内容的提问来源于stack exchange,提问作者user1532587

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:38:05