2010-10-27 62 views
0

我在我的視圖中使用了get_next_by_FOO來顯示一組記錄中下列項目的絕對URL,但是當它到達查詢集的末尾時會引發錯誤。如何在django視圖中限制get_next_by_FOO?包括的代碼

我該如何阻止我的觀點提出這個錯誤,而只是輸出一些HTML讓我知道它已經到了集合的末尾?

非常感謝所有幫助。

這是錯誤消息,我的視圖和模板代碼。

錯誤

Exception Type:  DoesNotExist 
    Exception Value: Body matching query does not exist. 

查看

def news_view(request, url): 
news = get_object_or_404(Body, url=url) 
next = news.get_next_by_published() 
pre = news.get_previous_by_published() 
return render_to_response('news/news_view.html', { 
    'news': news, 
    'pre': pre, 
    'next': next 
}, context_instance=RequestContext(request)) 

模板

<a href="{{ next.get_absolute_url }}">Next News</a></p> 
    <a href="{{ pre.get_absolute_url }}">Previous News</a></p> 

回答

4

蠻力答案是:

def news_view(request, url): 
    news = get_object_or_404(Body, url=url) 
    try: 
     next = news.get_next_by_published() 
    except Body.DoesNotExist: 
     next = None 
    try: 
     pre = news.get_previous_by_published() 
    except Body.DoesNotExist: 
     pre = None 
    return render_to_response('news/news_view.html', { 
     'news': news, 
     'pre': pre, 
     'next': next 
     }, context_instance=RequestContext(request)) 

模板:

{% if next %}<a href="{{ next.get_absolute_url }}">Next News</a></p>{% else %}<span class="disabled">At Last Item</span>{% endif %} 
{% if pre %}<a href="{{ pre.get_absolute_url }}">Previous News</a></p>{% else %}<span class="disabled">At First Item</span>{% endif %} 
4

我這樣做:

def news_view(request, url): 
    news = get_object_or_404(Body, url=url) 
    return direct_to_template(request, 'news/news_view.html', {'news': news,}) 

模板:

{% with news.get_previous_by_pub_date as prev %} 
    {% if prev %} 
     <a class="left btn" href="{{ prev.get_absolute_url }}">Previous News</a> 
    {% endif %} 
{% endwith %} 
{% with news.get_next_by_pub_date as next %} 
    {% if next %} 
     <a class="right btn" href="{{ next.get_absolute_url }}">Next News</a> 
    {% endif %} 
{% endwith %}