我有一個名爲Tag的模型,我在我的數據庫中有很多這樣的模型。 我想通過一個URL來訪問他們在一個頁面上通過以下方式:Django - URL正則表達式模式
如果我想看到ID爲1,3和4的標籤,那麼URL應該在134 有什麼正則表達式模式結束了,我應該爲了從/.../134/這樣的URL中獲得一個列表[1,3,4]?
在此先感謝
我有一個名爲Tag的模型,我在我的數據庫中有很多這樣的模型。 我想通過一個URL來訪問他們在一個頁面上通過以下方式:Django - URL正則表達式模式
如果我想看到ID爲1,3和4的標籤,那麼URL應該在134 有什麼正則表達式模式結束了,我應該爲了從/.../134/這樣的URL中獲得一個列表[1,3,4]?
在此先感謝
您需要固定寬度的標籤標識符(例如001003004),否則它是不明確的。如果你使用它,你可以捕獲\d+
,然後在視圖中做這樣的事情:
>>> import re
>>> tag_string = "001003004"
>>> regex = re.compile("\d{3}")
>>> tag_list = map(int, regex.findall(tag_string))
[1, 3, 4]
可能難以/不可能做到只用正則表達式如果兩個A.)的連續數字的URL的數量是任意的,和B),你需要每個數字返回您的代碼單獨。
如果你只需要抓住的數字串(然後在後面的代碼解析它),你可以只使用這樣的: /(\d+)/
(難逃/人的,如果他們使用作爲分隔符)
然後,你可以只運行在$ 1
如果需要的正則表達式每一位返回爲$ 1,$ 2,$ 3等一些字符串操作,我認爲唯一的解決辦法是一些很不雅觀,這樣的:
/(\d)(\d)?(\d)?(\d)?(\d)?(\d)?(\d)?(\d)?(\d)?(\d)?/
...其中這種情況下,它最多可以在URL中支持10個標籤。