2012-03-20 54 views
2

我有一組網址,我想要檢索與此URL相關聯的Django模型,而不是Django視圖,它是reverse URL Dispatcher does。該代碼將理想是這個樣子:將django url反向對象,而不是查看。可能?

urls_to_lookup = get_urls_to_lookup() 
models = [] 
for url in urls_to_lookup: 
    model = retrieve_django_model(url) 
    models.append(model) 

由於網址我想查找與他們(通過@permalink decorator)相關聯的唯一機型,好像這是可能的,但我的谷歌的skillz都上來了空手。謝謝你的幫助!

EDIT爲了幫助集思廣益的解決方案,我從Google Analytics中爲所有博客文章提取這些URL,並且我想動態顯示最常瀏覽的頁面。 URL本身很有幫助,但我想抓住每篇博文的標題,預告片等來顯示,並且這些都存儲在數據庫中。

+1

'@ permalink'實際上只是'reverse'的一個包裝。它基本上只是意味着「將此方法的返回值並將其反饋到」反向「中。它不會創建某種對象和URL的註冊表。 – 2012-03-20 15:44:04

+0

是的,但不會那麼好[在你需要它的0.00001%的時間內像我一樣:)] – dino 2012-03-21 16:49:45

回答

3

如果您嘗試創建站點地圖;有sitemaps contrib app

如果您試圖打印出漂亮格式的所有網址,請參閱this answer

我試圖想到有這樣一個功能的原因,但它逃脫了我。然而,這應該做你想做的(未測試):

from django.db import models 

def retrieve_django_model(url): 
    m_instances = [m for m in models.get_models() \ 
        if m.objects.all().count()] 
    for m in m_instances: 
     if m.objects.all().order_by('?')[0].get_absolute_url() == url: 
      return m 
     else: 
      return None 

因爲我們只能從實例不是模型獲取絕對URL,初始列表理解過濾掉那些對其中有沒有實例模型,因此我們無法獲取絕對網址。

+0

手工創建映射絕對有效。希望有更好的方法來直接查詢數據庫或 – dino 2012-03-20 16:06:01

+0

也注意編輯上面的這個問題的用法。我想我會澄清,如果它引發了一些想法給你。感謝您的輸入! – dino 2012-03-20 16:10:11