понедельник, 3 июня 2013 г.

Reverse for '*' with arguments '()' and keyword arguments '{u'pk': ''}' not found

Ошибка эта была получена, когда я попытался вывести на страницу список коллекций одежды для определенного года. Причина этой ошибки в том, что в шаблоне тэг {% url ... %} получал для pk пустое значение. В сообщении об ошибке был показан проблемный фрагмент шаблона:

{% for collection in collection_list %}
<li>
    <a>
        {{ collection.title }}
    </a> ( {{ collection.author.all|join:', ' }} )
</li>
{% endfor %}


А пустое значение было получено потому, что была допущена опечатка во views.py:

class CollectionYearListView(ListView):
    """
    Список коллекций определенного года
    """
    context_object_name='collection_list'
    template_name='collection/collection_list.html'

    def get_queryset(self):
        return Collection.objects.filter(contest__year=self.kwargs['year']),


Ошибка в том, что в конце return нужно убрать запятую.
Кстати, вот фрагмент из urls.py:

urlpatterns = patterns('',
    #/collection/2012
    url(r'^(?P<year>\d{4})/$', CollectionYearListView.as_view(), 
        name="collection_year_list"),
)


Комментариев нет:

Отправить комментарий