django url解析中的ResolverMatch
阿新 • • 發佈:2019-01-31
ever code https acc enc -c 描述 三元 rgs
了解這個問題,源於昨天開發時遇到的一個小小的問題。
問題描述如下:
比如,我有一個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
(path, urlconf=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 ResolverMatch
object 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