2013-02-11 3 views
0

James Bennett의 실용적인 Django 프로젝트에서 coltrane (django 블로그)의 예제를 통해 나에게 맞춤 블로그의 시작점을 알려줍니다. 첫 번째 장에서 대부분의 작업을 수행하여 모든 블로그를 정리할 수 있었지만 일반보기로 전환하면 문제가 해결되는 것 같습니다.Coltrane 블로그 템플릿을 사용하는 일반 뷰의 문제점

내 블로그 나는 다음과 같은 views.py 사용할 때 작동

: 나는 (첫 번째 URLPATTERN 사용) 블로그 항목의 목록을 만들 수 있습니다

entry_info_dict = { 
    'queryset': Entry.objects.all(), 
    'date_field': 'publish_date', 
    } 

urlpatterns = patterns('', 
('^blog/$','blog.views.entry_list'), 
('^blog/(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$','django.views.generic.date_based.object_detail',entry_info_dict),) 

다음을 사용 :

def entry_list(request): 
    return render_to_response('blog/entry_listing.html', 
           { 'entry_list': Entry.objects.all() }, 
           context_instance=RequestContext(request)) 

def entry_detail(request, year, month, day, slug): 
    date_stamp = time.strptime(year+month+day, "%Y%b%d") 
    publish_date = datetime.date(*date_stamp[:3]) 
    entry = get_object_or_404(Entry, publish_date__year=publish_date.year, 
           publish_date__month=publish_date.month, 
           publish_date__day=publish_date.day, 
           slug=slug) 
    return render_to_response('blog/entry_detail.html', 
           { 'entry': entry }, 
           context_instance=RequestContext(request)) 

urls.py를 두 번째 URL 패턴을 사용하여 전체 항목을 보려면 '상세보기'를 입력하십시오.

entry_info_dict = { 
    'queryset': Entry.objects.all(), 
    'date_field': 'publish_date', 
    } 

urlpatterns = patterns('', 
('^blog/$', 'django.views.generic.date_based.archive_index', entry_info_dict), 
('^blog/(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$','django.views.generic.date_based.object_detail',entry_info_dict),) 

나는 (내 템플릿에 해당 변경 : 다음

내 url.py이되고, 그래서 내가, 주요 블로그 목록을 보여주기 위해 일반적인보기를 사용하려면 내 urls.py를 교환하는 것이 좋습니다 이 일반보기는 _archive.html 템플리트로 기본 설정되어 있으며 항목으로 '항목'대신 일반 '오브젝트'를 사용하므로 entry_archive.html을 작성하십시오. 그러나 아무것도 표시되지 않습니다.

템플릿은 다음과 같습니다

entry_archive.html

{% extends "base.html" %} 

{% block content %} 

<p>These are public blog entries.</p> 

<ul> 
    {% for object in object_list %} 
    {% if object.status == object.LIVE_STATUS %} 

    {% include "blog/entry_summary.html" %} 

    {% endif %} 
    {% endfor %} 
</ul> 

{% endblock %} 

entry_summary.html

<div class="blog_entry"> 
    <h2 class="blog_title">{{ object.title }}</h2> 
    <div class="blog_date">Published on {{ object.publish_date }}</div> 
    <div class="blog_summary">{{ object.summary }}</div> 
    <div class="blog_image"></div> 
    <div class="blog_url"><a href="{{ object.get_absolute_url }}">Read full entry</a></div> 
</div> 

꽤 괜찮 않을 무슨에 어떤 생각?

+0

어떤 장고 버전입니까? –

+0

장고 버전 1.3.1을 사용하고 있습니다. –

답변

0

답을 찾았습니다 - 문제는 archive_index 제네릭 뷰가 'object_list'라는 객체가 아닌 모든 항목과 함께 'latest'라는 객체를 반환한다는 것입니다.

관련 문제