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

Django视图中如何根据request.path获取对应路由的name值

实现方案

直接使用Django内置的resolve()方法即可实现需求,不需要手写路径匹配逻辑,该方法会自动完成全量路由规则匹配,返回结果中直接携带路由配置的name值。

自定义函数实现代码

from django.urls import resolve
from django.http import Http404

def get_path_name(request_path):
    try:
        # 解析路径对应的路由匹配结果
        match_obj = resolve(request_path)
        # 直接返回匹配到的路由name值
        return match_obj.url_name
    except Http404:
        # 路径未匹配到任何路由时的处理,可根据业务需求调整返回值
        return None

补充说明

  • 该方法天然兼容动态参数路由(比如path('detail/<int:article_id>/', ...)这类带路径参数的配置),不需要额外编写参数匹配逻辑
  • 如果你的路由配置了命名空间(namespace),可以通过match_obj.namespace拿到命名空间值,拼接后即可得到完整的路由标识,比如f"{match_obj.namespace}:{match_obj.url_name}"
  • 不建议自行遍历urlpatterns做字符串匹配,遇到子路由include、正则路由、动态参数路由、命名空间路由时会出现大量边界问题,内置的resolve()已经覆盖了所有路由场景的处理逻辑
  • 按你给出的配置,访问/home/路径时,该函数会正确返回"home_view",和预期效果一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:27:25