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

request.GET无法获取输入数据如何解决?附代码及请求日志

解决Django中request.GET无法获取表单数据的问题

嘿,我看你遇到了Django里request.GET拿不到表单提交数据的问题?咱们结合你的代码和日志一步步排查解决:

先看看你的现有代码

HTML表单代码

<form action="add"> 
    Enter 1st number = <input type="text" name="num1"><br> 
    Enter 2nd number = <input type="text" name="num2"><br> 
    <input type="submit"> 
</form>

Django视图代码

def add(request):
    val1 = int(request.GET['num1'])
    val2 = int(request.GET['num2'])
    res = val1 + val2

请求日志

"GET /add?num1=10&amp;num2=20 HTTP/1.1" 200 297

问题分析与解决方案

从日志能看到,请求确实携带了num1和num2参数(日志里的&amp;是HTML转义后的&,实际参数是正常的num1=10&num2=20,不用纠结这个),核心问题出在这几个地方:

  1. 视图函数缺少响应返回
    Django的视图函数必须返回一个HttpResponse对象,你现在的代码只计算了res但没有返回任何内容,这会导致服务器报错,也会让你误以为参数没获取到。修改后的视图应该像这样:

    from django.http import HttpResponse
    
    def add(request):
        # 用get()方法取值,避免参数缺失时抛出KeyError
        val1_str = request.GET.get('num1')
        val2_str = request.GET.get('num2')
        
        # 先检查参数是否存在
        if not val1_str or not val2_str:
            return HttpResponse("请填写两个数字!")
        
        # 处理数字转换的异常
        try:
            val1 = int(val1_str)
            val2 = int(val2_str)
            res = val1 + val2
            return HttpResponse(f"计算结果:{res}")
        except ValueError:
            return HttpResponse("请输入有效的整数!")
    
  2. 表单请求方式建议显式声明
    虽然HTML表单默认是GET请求,但显式加上method="GET"可以避免环境或框架的潜在问题,修改后的form标签:

    <form action="add" method="GET">
    
  3. URL路由与表单action的匹配
    确保你的urls.py里配置了正确的路由,比如:

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('add/', views.add, name='add'),
    ]
    

    如果路由是add/(带斜杠),表单的action最好写成add/保持一致,避免重定向导致参数丢失。

额外提示

  • 永远不要直接用request.GET['key']的方式取值,一旦参数缺失会直接抛出KeyError,用get()方法并做容错处理更健壮。
  • 如果后续需要处理敏感数据,记得用POST请求,GET请求的参数会暴露在URL里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:00:04