2016-06-17 1 views
1

私は両方とも本当に新しいですが、私はdjango 1.9とpython 3.5を使用していますが、私はbase.htmlにあるブートストラップのドロップダウンを埋めるのに問題があります。 これまでのところ私はこのている:djangoを使ってbase.htmlにブートストラップのドロップダウンを埋め込みます

base.html:

<li class="dropdown"> 
     <a href="#" class="dropdown-toggle" data-toggle="dropdown">Events 
     <b class="caret"></b></a> 
      <ul class="dropdown-menu"> 
       {% if categories %} 
        {% for cat in category %} 
         <li><a href="{% url 'categories' pk=cat.pk %}"> 
         {{ cat.name }}</a></li> 
        {% endfor %} 
       {% else %} 
         There are no categories present. 
       {% endif %} 
      </ul> 
</li> 

views.py:

def categories(request, pk): 
    category = Category.objects.get(pk=pk) 
    return render(request, 'categories.html', {'category': category}) 

urls.py:

url(r'^categories/(?P<pk>\d+)/$', views.categories, name='categories'), 

だから私は、ドロップダウンをしたいですデータベースから利用可能なカテゴリを表示すると、それをクリックすると明らかにcategories.htmlが読み込まれます関連カテゴリを表示します。

ご協力いただければ幸いです。

編集:申し訳ありませんが私は持っている問題を言うのを忘れました。 イム問題のカップルがここにありますダウン人口ドロップを取得し、私だけ「現在何のカテゴリがありません」

+0

だからあなたの質問は何でしょう、あなたのPythonコードでこれをか?どのような特定の問題がありますか? –

+0

申し訳ありませんが、それは私に "存在しないカテゴリがあります"と言っています。 – Stimo

答えて

1

を与えていない:

まず、あなたはあなたのビュー内の任意のコンテキストを持っていませんまだcategoriesと呼ばれていますが、あなたのテンプレートでそれらをチェックしています。ビュー機能は「カテゴリ」と呼ばれ、混乱を招く可能性があります。しかし、これはあなたの視点からアクセス可能なコンテキストではありません。それは単なる関数です。だから、あなたが必要

category = Category.objects.get(pk=pk) 
# using the get() method means you're requesting a single object 

第二に、あなたはあなたのビューでカテゴリのリスト(あなたがあなたのテンプレートであるとして、あなたが反復可能性)取得していない、あなたが単一のカテゴリーを取得しています

categories = Category.objects.all() 
# here, we're getting a QuerySet (list of objects), rather a single object 

次に、categoriesを自分のコンテキストに追加します。だからあなたのビューはこのように見える終わるでしょう:

def categories(request, pk): 
    categories = Category.objects.all() 
    return render(request, 'categories.html', {'categories': categories}) 

また、あなたはcategorycategoriesを反復するために、あなたのイテレータを変更しない必要があります:

{% for cat in categories %} 
    <li><a href="{% url 'categories' pk=cat.pk %}"> 
    {{ cat.name }}</a></li> 
{% endfor %} 
+0

ありがとう、私は完全に理解していますが、残念ながらまだ動作していません。 – Stimo

+0

レンダリングステートメントでコンテキストdictを更新しましたか?カテゴリも存在しますか? a) 'categories'コンテキストが存在しないか、またはb)' categories' QuerySetが空(カテゴリが存在しません)の場合、 '{%if categories%}'はfalseを返します。私は新しいコンテキスト(カテゴリの代わりにカテゴリを繰り返し)を反映するために私の答えを更新しました。 –

+0

はいビューを更新しました。私は4つのテストカテゴリを入れましたが、まだドロップダウンには表示されていないという名前のカテゴリーのpostgresにテーブルを持っています。完全な痛みになることは申し訳ありません。 – Stimo

0

ので、「カテゴリ」変数は決してそれを定義していない間はあなたに「真実」を与え、それをテンプレートの文脈に加えます。

def categories(request, pk): 
    categories = Category.objects.all() 

    return render(request, 'categories.html', {'categories': categories}) 
関連する問題