1. 程式人生 > >django url解析中的ResolverMatch

django url解析中的ResolverMatch

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 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