2013-02-11 60 views
0

我正在關注James Bennett的Practical Django Projects中的coltrane(一個django博客)示例,以嘗試爲我自己的自定義博客提供一個起點。我能夠在第一章中完成大部分工作,以便讓我的博客全部排好隊,但是當他切換到通用視圖時,它似乎打破了。使用Coltrane博客模板的通用視圖的問題

我的博客作品,當我使用下面的views.py:

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:

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),) 

使用這些我可以創建博客條目的列表(使用第一URLPATTERN)然後輸入「詳細視圖」以查看完整條目(使用第二個url模式)。

然後建議我換我的urls.py使用通用視圖來顯示主博客上市,所以我url.py變爲:

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),) 

我使我的模板相應的變化(創建一個entry_archive.html,因爲這個通用視圖默認爲_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

什麼django版本? – 2013-02-11 19:57:01

+0

我使用的是django 1.3.1版 – 2013-02-11 20:07:11

回答

0

找到了答案 - 問題是archive_index通用視圖返回一個名爲'latest'的對象與所有條目,而不是一個名爲'object_list'的對象!