2017-12-19 15 views
0

나는 상황에 맞는 클래스를 장고하는 검색어 세트의 개체를 전달하려고하지만, 다음과 같은 오류가 발생 있도록 뭐하는 거지 : ('. 상황이 딕셔너리가 아닌 % s에 있어야합니다'% 컨텍스트 .__ 클래스 __.__ name__) 형식 오류가Django의 컨텍스트 클래스에 쿼리 집합을 전달하는 방법은 무엇입니까?

이제 컨텍스트는 사전 만 허용하지만 django 버전 1.8을 사용하고 django 2.0을 사용하는 django_unleashed라는 책의 예제를 따르고 있습니다. 그리고 나는 그것이 이전 버전에서 그것 같이 행해졌다고 생각한다. 실제로,

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) 

:이 단계가 제대로 장고 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 ext = { 'tag_list': tag_list}'. –

+0

오, 고마워, 그게 해결 됐어,하지만 왜 내가 컨텍스트 개체를 제거해야하는지 설명 할 수 있겠 니? –

+1

오류와 마찬가지로, 최근 버전에서는'template.render'는 평범한 dict을 기대합니다. –

답변

1

오류에서 알 수 있듯이 을 사용하여이 작업을 수행하는 방법을

그래서 제 질문은 당신이 상황에 대한 정기적 인 사전을 사용해야한다 일반적으로 템플릿을 수동으로 렌더링하는 대신 render 단축키를 사용합니다.

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)