2010-10-10 31 views
0

也許我錯過了一些東西,但根據django文檔(1.2),我已經設置了我的URLS,模型完全按照指定的方式來確保我不是硬編碼的url返回的get_absolute_url。獲得@permalink decrator與django通用視圖一起工作?

下面是我有:

在urls.py

urlpatterns = patterns('django.views.generic.list_detail', 
    url(r'^$','object_list', 
      { 'queryset': product.objects.all(), 
      'template_name': 'products/list.html', 
      }, 
      name='product_list'), 
    url(r'^(?P<slug>[-\w]+)/$','object_detail', 
      { 'queryset': product.objects.all(), 
      'template_name': 'products/detail.html', 
      }, 
      name='product_detail'), 
) 

在models.py

@models.permalink 
def get_absolute_url(self): 
    return ('product_detail',(), {'slug': str(self.slug)}) 

該方法返回模板中的一個空字符串,並從殼它給出錯誤。

NoReverseMatch: Reverse for 'product_detail' with arguments '()' and keyword arguments '{'slug': 'dd-d--'}' not found. 

這應該解決它應該不是,因爲urls.py有一個名字:product_detail

回答

2

語法似乎是正確的,你確定你的urls.py被包括在內嗎?嘗試在視圖代碼中加入debuggin,並使用反向函數首先生成url。

我的猜測是,你的urls.py文件通常有問題。

+0

是的,昨晚想通了。沒有在根URL中正確包含它。 – ismail 2010-10-11 21:12:08

+0

那麼爲什麼我的答案不正確:P – iElectric 2010-10-11 23:03:20

1

嘗試改變這一行:

url(r'(?P<slug>[-\w]+)/^$','object_detail', 

url(r'^(?P<slug>[-\w]+)/$','object_detail', 

CARRET (^)代表t的開始他行,所以它在你寫的上下文中是不合邏輯的,因爲它意味着該行在它開始之前就已經有了內容。

+0

很好地拾起,做出了改變。不過,它似乎仍然無法扭轉網址。 – ismail 2010-10-10 00:49:36

+0

我已經測試了這個模式,並且據我所知它可以正常工作,除此之外我找不到其他的東西。 – 2010-10-10 09:22:28

相關問題