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

Django技术问题:如何从request对象获取URL视图名称?

在Django视图中获取当前请求对应的URL视图名称

要从request对象中拿到当前请求对应的视图名称,有两种可靠的方法:

1. 直接使用request.resolver_match(推荐,Django 1.5+)

Django 1.5及以上版本中,request对象自带resolver_match属性,里面包含了URL解析后的匹配数据,其中view_name字段就是我们需要的视图名称。在视图函数里直接调用即可:

def my_view(request):
    current_view = request.resolver_match.view_name
    # 示例:用获取到的视图名称做重定向
    # return redirect(current_view)

类视图中同样适用,通过self.request.resolver_match.view_name就能获取。

2. 兼容旧版本的反向解析方式(Django < 1.5)

如果你的项目还在使用Django 1.5之前的版本,可以通过resolve()函数结合请求路径来获取:

from django.core.urlresolvers import resolve

def my_view(request):
    match_obj = resolve(request.path)
    current_view = match_obj.view_name

关键注意点

  • 当URL配置使用了命名空间(比如通过include导入带命名空间的URLconf),view_name会返回命名空间:视图名的格式(例如blog:post_list),重定向时需要完整使用这个名称。
  • 如果请求没有匹配到任何有效视图(比如404场景),resolver_match可能为None,实际使用前建议先做非空判断,避免报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:24:53