2015-06-10 8 views
1

Я пытался использовать несколько DetailView в моем views.py, но по какой-то причине я получаю эту ошибку во время рендеринга шаблона. http://prntscr.com/7f8vql http://prntscr.com/7f8vlv.Django 1.8 using multiple DetailView

Мои views.py

def rock_and_feat(request): 
    feats = Feat.objects.order_by('-created')[:3] 
    rocks = Rockinfo.objects.order_by('-rank')[:50] 
    context = RequestContext(request, { 
    'feats': feats, 'rocks': rocks 
    }) 
    return render_to_response('template.html', context) 


class DetailView(generic.DetailView): 
    model = Feat 
    template_name = 'feature/detail.html' 
    context_object_name = 'feat' 

class RockDetailView(generic.DetailView): 
    model = Rockinfo 
    template_name = 'feature/detailrock.html' 
    context_object_name = 'rockinfo' 

Мои приложения urls.py

urlpatterns = [ 

url(r'^$', views.rock_and_feat, name='rock_and_feat'), 
url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'), 
url(r'^(?P<pk>[0-9]+)/$', views.RockDetailView.as_view(), name='detailrock'), 
] 

Мой проект-х urls.py

urlpatterns = [ 
url(r'^', include('feature.urls', namespace="feature")), 
url(r'^admin/', include(admin.site.urls)), 
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

template.html

{% block rocker %} 
     {% if rocks %} 
      {% for item in rocks %} 

       <div class="artist-container"> 
       <a href="{% url 'feature:detailrock' rockinfo.id %}"><img src="{{ item.rock_img.url }}" class="artist-img" alt="Dimitri Vegas &amp; Like Mike"> 
       <div class="artist-info">{{ item.rock_name }}</div></a></div> 
      {% endfor %} 
     {% else %} 
       <p>No rockers are available.</p> 
     {% endif %} 
       </div></div> 
    {% endblock %} 

Я не могу понять, что ошибка about.Thanks

+1

Ваша деталь и detailrock имеют тот же шаблон в вашем urls.py, возможно, это как-то связано с этим. – vmonteco

+0

@vmonteco Я попытался изменить шаблон, но та же ошибка появилась. – WutWut

+0

check rockinfo | pprint – madzohan

ответ

2

Я rememeber свой вопрос о rock_and_feat.

Есть несколько вещей, которые я хочу упомянуть:

urlpatterns = [ 
    url(r'^$', views.rock_and_feat, name='rock_and_feat'), 
    url(r'^detail/(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'), 
    url(r'^rock_detail/(?P<pk>[0-9]+)/$', views.RockDetailView.as_view(), name='detailrock'), 
] 

У вас нет rockinfo. Это item. В этой строке:

{% url 'feature:detailrock' item.id %} 

Еще одна вещь. Обратите внимание, что idis not the same как pk.

{% url 'feature:detailrock' item.pk %} 

Последнее последнее сообщение. Это может быть заменен:

{% if rocks %} 
     {% for item in rocks %} 
      .... 
     {% endfor %} 
    {% else %} 
     <p>No rockers are available.</p> 
    {% endif %} 

С этим (docs):

{% for item in rocks %} 
     ... 
    {% empty %} 
     <p>No rockers are available.</p> 
    {% endfor %} 
0

(дикие угадать здесь) Чтение ошибки, мне кажется, что rockinfo.id пуста или не существует (или не передается шаблон), вы проверили это?

Кроме того, вы должны иметь две различные шаблоны для взглядов

Надежда это помогает

0

1.Please проверка шаблона для получения rockinfo.id и проверить.

<a href="{% url 'feature:detailrock' rockinfo.id %}">

2.Remove имен из привязок и просто использовать <a href="{% url 'detailrock' rockinfo.id %}"> в шаблоне.

Я думаю, что 1 или 2 будут работать.