0

質問を一文にまとめることができませんでした。私はチュートリアルに従ってブログを一から作成していました。しかし、チュートリアルでは、すべてのカテゴリ、タグ、月、年のリストが別々のテンプレートに含まれると予測していました。

カテゴリのリスト、月と年のリストをメインのブログページに追加したいと思います。

これが私が得たものです。このコードを使用すると、カテゴリのリストがメインページに表示されますが、ブログ/カテゴリのURLに移動した場合にのみ表示され、ブログ/だけではありません。

    **(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(),},)

こんな感じでした。私はこれを試しましたが、defリストに運がありません:

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

ブログ/カテゴリに表示されるものをブログ/にも表示するにはどうすればよいですか?ありがとう。

4

1 に答える 1

0

ブラウザにURLを入力すると、リクエストがサーバーに送信されます。次に、DjangoはURLを取得し、それをURLパターンと照合して、適切なビューを決定します。ビューが見つかるとすぐに、djangoはマッチングを停止し、このビューを実行して応答を返します。

異なるビューでカテゴリを使用する場合は、すべてのビューで同じcategoriesコンテキスト変数がテンプレートに提供されていることを確認するか、通常ははるかに優れているため、単純なカスタムテンプレートタグを作成する必要があります。カテゴリの場合、これは次のようになります。

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

ファイル内の「blog/category_list.html」は、現在「categories.html」と「list.html」の両方にあるコードになります。これらのファイルでそれをに置き換えます。

{% load your_blog_tags %}
{% categories_list %}

カテゴリリストが必要な場所ならどこでも使用できます。もちろん、同じことが年と月のリストにも当てはまります。

于 2012-06-07T17:20:48.527 に答える