2017-12-19 24 views
0

私はコンテキストクラスをDjangoのためにクエリセットオブジェクトを渡そうとしますが、次のエラーが発生してやっている:(「コンテキストはdictのではなく、%sのでなければならない」%コンテキスト.__クラス__.__ name__)例外TypeErrorがDjangoのコンテキストクラスにクエリセットを渡すには?

私は文脈が辞書だけを受け入れるが、私はdjangoバージョン1.8を使用してdjango 2.0を使用しているdjango_unleashedという本の例に従っていると理解しています。以前のバージョンではそうだったと思います。

だから私の質問は、私はこのステップが正しくエラーが示すように、あなたはコンテキストのための定期的な辞書を使用すべきである2.0

from django.shortcuts import render 
from django.http import HttpResponse 
from .models import Tag 
from django.template import Context, loader 

def homepage(request): 
    tag_list = Tag.objects.all() 
    template = loader.get_template('organizer/tag_list.html') 
    context = Context({'tag_list': tag_list}) 
    output = template.render(context) 
    return HttpResponse(output) 
+3

ちょうどcontのテンプレートをレンダリングするのではなく、通常renderのショートカットを使用します。 ext = {'tag_list':tag_list} '。 –

+0

ありがとう、それはそれを解決しましたが、なぜ私はコンテキストオブジェクトを削除する必要があるか説明することができますか? –

+1

エラーのように、最近のバージョンでは 'template.render'は普通のdictが必要です。 –

答えて

1

ジャンゴを使用して行う必要があります方法です:、実際には

def homepage(request): 
    tag_list = Tag.objects.all() 
    template = loader.get_template('organizer/tag_list.html') 
    context = {'tag_list': tag_list} 
    output = template.render(context) 
    return HttpResponse(output) 

from django.shortcuts import render 

def homepage(request): 
    tag_list = Tag.objects.all() 
    context = {'tag_list': tag_list} 
    return render(request, 'organizer/tag_list.html', context) 
関連する問題