2010-10-10 1 views
0

Может быть, я что-то пропустил, но согласно django docs (1.2), я настроил свои URLS, модели точно так же, как указано, чтобы гарантировать, что я не жестко-кодирующие URL-адреса, возвращаемые для get_absolute_url.Получение @permalink decrator для работы с django generic views?

Вот что у меня есть:

в 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 in view и использовать функцию reverse, чтобы сгенерировать URL-адрес.

Мое слепое предположение было бы, что-то не так с вашим файлом urls.py в целом.

+0

да, понял это прошлой ночью. Не включал его правильно в корневые URL. – ismail

+0

Тогда почему мой ответ неверен: P – iElectric

1

Попробуйте изменить эту строку:

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

в

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

Carret (^) означает начало t он нелогичен в контексте, который вы написали, поскольку это означает, что у линии есть контент, прежде чем он даже начнется.

+0

красиво подобрано, сделано изменение. Однако, похоже, он все еще не может изменить URL-адрес. – ismail

+0

Я протестировал шаблон, и насколько я могу сказать, он работает нормально, кроме этого я не могу найти что-либо еще. –