2012-06-07 72 views
0

我無法將我的問題放在一個句子中。 我正在按照教程從頭開始創建博客。但教程預測將所有類別,標籤,月份和年份列表放在單獨的模板中。Django函數問題和urlconf混淆

我想在主博客頁面上添加一個類別列表,一個月份和年份列表。

所以這就是我得到的。使用此代碼,類別列表顯示在主頁面中,但前提是您轉到博客/類別網址,而不是僅在博客/我希望的位置。

**(r'^$', list),** 
    (r'^archive/(\d{1,2})/$', list), 
    (r'^\d{2}/d{4}/$', month), 
    (r'^([0-9]{4}/\d{1,2})/(?P<slug>.*)/$', detail), 
    (r'^(?P<year>\d{4})/$', year), 
    **(r'^category/$', category),** 

我也試過:

(r'^$', category), 

,但沒有運氣。

這是從模板相同的代碼在category.html和list.html:

{% if categories %} 
     {% for category in categories %} 
     <li class="cat-item"><a href="category/{{ category.name.lower }}/" 
      title="{{ category.name.capitalize }}"> 
      {{ category.name.capitalize }}</a> 
     </li> 
     {% endfor %} 
     {% endif %} 

Views.py:

def category(request): 
    return render_to_response('blog/list.html', {'categories':Category.objects.all(),},) 

它是這樣的。我試過這個,但在清單中沒有運氣:

return render_to_response('blog/list.html',{'posts':posts, 
             'next':next, 
             'previous':previous, 
             'categories':Category.objects.all(), 
             },) 

我怎樣才能得到什麼顯示博客/類別顯示在博客/還? 謝謝。

+1

'list'是一個Python內置函數。我不會推薦命名你的視圖列表,因爲它會影響內置的。 –

+0

感謝您的建議。 – tamara

回答

0

當您在瀏覽器中輸入網址時,會向您的服務器發送請求。然後Django獲取url並將其與URL模式匹配以確定正確的視圖。只要發現一個視圖,Django停止匹配並執行這個視圖,然後返回一個響應。

如果您想在不同的視圖中使用您的類別,您必須確保在每個視圖中向模板提供了相同的categories上下文變量,或者通常要好得多,write a simple custom template tag。爲了您的類別,這可能是這樣的:

@register.inclusion_tag('blog/category_list.html') 
def categories_list(): 
    return { 'categories': Category.objects.all() } 

在文件「博客/ categoy_list.html」,那麼將是目前無論是在「categories.html」和「list.html」的代碼。在這些文件中將其替換爲。

{% load your_blog_tags %} 
{% categories_list %} 

無論你需要什麼類別列表,你都可以使用它。當然這同樣適用於年份和月份列表。

+0

好吧,我做了那個,但我什麼都沒有。 – tamara

+0

你在數據庫中有一些'Categories'嗎?當你執行'python manage.py shell',然後'import '和'categories_list()'時,你會得到什麼? – Maccesch

+0

你是什麼意思通過導入?因爲我在我的博客應用程序文件夾中創建了一個templatetags文件夾,並且在裏面有這些文件:categories_list.py categories_list.pyc __init__.py __init __。pyc。代碼與上面相同。所以我加載了模板中的categories_list,並在其中顯示了{{categories_list}}。是的,我在我的數據庫中創建了3個類別,並相應地顯示在博客/類別頁面上。 – tamara