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

Django中如何获取当前请求的URL及对应参数ID

错误根因

报错module 'django.http.request' has no attribute xxx的本质是你错误引用了django.http.request模块,覆盖了视图函数传入的请求实例对象。Django视图函数的第一个参数为请求实例,默认命名为request,如果你的代码顶部提前导入了from django.http import request,就会把局部实例变量覆盖为模块,自然找不到对应属性。

正确获取请求URL的写法

build_absolute_uri是请求实例的方法而非属性,调用时需要加括号,示例如下:

# 视图函数第一个参数必须为request,且无拼写错误
def your_view(request):
    # 获取完整请求URL,例如http://127.0.0.1:8000/
    current_url = request.build_absolute_uri()
    print(current_url)

正确获取路由名称及id参数的写法

确认未覆盖request实例变量后,按你的id参数类型选择对应获取方式:

def your_view(request):
    # 获取当前路由的name属性值
    url_name = request.resolver_match.url_name
    
    # 若id为路径参数(路由规则为/<int:id>/),从kwargs取
    path_id = request.resolver_match.kwargs.get('id')
    
    # 若id为查询参数(请求地址为/?id=xxx),从GET字典取
    query_id = request.GET.get('id')

排查步骤

如果仍有报错,按顺序检查:

  • 确认视图函数第一个参数命名为request,无拼写错误
  • 删除代码顶部from django.http import request这类导入模块的语句,避免覆盖实例变量
  • 确认请求是通过Django路由正常转发到视图,而非手动构造的请求对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:15:02