2012-06-30 8 views
0

Django 템플릿 시스템에서 내 변수에 액세스하는 방법을 알아 내려고했습니다. 내 models.py :Django에서 뷰를 통해 변수 전달하기 템플릿

class SubCategory(models.Model): 
    name = models.CharField(max_length=50, unique=True) 
    category = models.ManyToManyField(Category) 

내보기 :

from myapp.models import Category, SubCategory 

def create_in_category(request, slug): 
    category = get_object_or_404(Category, slug=slug) 
    subcategory = SubCategory() 

    ad = Ad.objects.create(category=category, subcategory=subcategory, user=request.user, 
         expires_on=datetime.datetime.now(), active=False) 
    ad.save() 
    return redirect('myapp_create_ad_edit', pk=ad.pk) 
... 

class AdCreationEditView(AdEditView): 
    def get_queryset(self): 
     qs = super(AdEditView, self).get_queryset() 
     return qs.filter(active=False, user=self.request.user) 

    def get_success_url(self): 
     return reverse('classifieds_create_ad_preview', 
         kwargs=dict(pk=self.object.pk)) 

    def get_context_data(self, **kwargs): 
     context = super(AdCreationEditView, self).get_context_data(**kwargs) 
     context['create'] = True 
     return context 

내 템플릿에 {{ subcategory }} 액세스 할 수 있기를 원하지만, 오류 발생 : 'subcategory' is an invalid keyword argument for this function을 때문에 내보기에 오류 . 어떤 제안이라도 대단히 감사하겠습니다. 감사합니다.

+2

어디에서 템플릿을 사용하고 있습니까? 여기에 어떤 템플릿 렌더링도 나타나지 않습니다. – Amber

+0

실제로 템플릿을 렌더링하는 것은 무엇입니까? 나열된 함수가 리디렉션 만하면 아무 것도 렌더링하지 않습니다. – Amber

+0

템플릿을 렌더링하는 뷰가 아닙니다. 렌더링하지 않고 리디렉션하고 있습니다. –

답변

0

이 오류는 템플릿에서 발생하지 않으며 질문과 관련이 없습니다. subcategory은 ManyToMany 관계이므로 연결 테이블을 통해 이러한 관계가 구현 된 방식으로 인해 개체 인스턴스화시 해당 인스턴스를 정의 할 수 없습니다. 먼저 Category 및 Subcategory 개체를 모두 저장해야합니다.

개체를 템플릿에 전달하는 방법에 대한 실제 질문에 대한 답변은이 자습서에서 완전히 답변됩니다.

+0

답변 해 주셔서 감사합니다. 네,이 튜토리얼을 여러 번 읽고 djangobook을 읽었습니다. 설명서를 읽는 동안 시나리오에 적용하는 방법을 완전히 이해하지 못하기 때문에 다른 눈을 기대하고 있습니다. 나는'subcategory = get_list_or_404 (Subcategory)'액세스를 사용하려했지만, 내 뷰 내부의 요소를 적절히 정의하는 방법을 여전히 모르겠습니다. 어떤 아이디어 주셔서 감사합니다. –

+0

나는 당신에게 대답하는 방법을 정말로 모른다. 두 가지 주요한 문제가 있습니다. 첫째, 범주/하위 범주 개체를 처음부터 만들지 못하게하는 오류 메시지입니다. 둘째, 템플릿에 물건을 전달하는 방법에 대한 혼란. 먼저 첫 번째 문제를 해결했음을 증명해야합니다. 그런 다음 템플릿에 대한 혼란을 해결할 수 있습니다. –