django url解析中的ResolverMatch

Posted aguncn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django url解析中的ResolverMatch相关的知识,希望对你有一定的参考价值。

了解这个问题,源于昨天开发时遇到的一个小小的问题。

问题描述如下:

比如,我有一个url,定义如下:

path(res_edit/<app>/<env>/, AppResEditView.as_view(), name=res_edit),

那如果我现在拿到一个url是如下:

/res_edit/App_70/UAT/

那么,问题来了:

我如何通过django原生的途径,拿到app=App_70, env=UAT这样的变量?

============================================================

找了一些文档,最后,发现官网的还是最有效:

https://docs.djangoproject.com/en/2.1/ref/urlresolvers/

原来,resolve函数就可以返回一个三元组,而其中的字典,即我们需要的东东。如下:

func, args, kwargs = resolve(self.request.path)
app = kwargs[app]
env = kwargs[env]

 

官方说明如下:

resolve(pathurlconf=None)[source]

path is the URL path you want to resolve. As with reverse(), you don’t need to worry about the urlconf parameter. The function returns a ResolverMatchobject that allows you to access various metadata about the resolved URL.

If the URL does not resolve, the function raises a Resolver404 exception (a subclass of Http404) .

以上是关于django url解析中的ResolverMatch的主要内容,如果未能解决你的问题,请参考以下文章

Django之URL反向解析

Django框架之URL反向解析静态文件配置以及应用的创建

Django框架之URL反向解析静态文件配置以及应用的创建

django的url反向解析

Django之url反向解析

python之路_day107_django中url反向解析及数据库连接