2012-06-30 116 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。雖然我已閱讀文檔,但我不完全理解如何將其應用於我的場景,這就是爲什麼我希望獲得另一組眼睛的原因。我試圖使用訪問'子類別= get_list_or_404(子類別)',但仍然不知道如何正確定義我的視圖內的元素。感謝您的任何想法。 –

+0

我真的不知道如何回答你。你有兩個主要問題:第一,錯誤信息,它阻止你首先創建類別/子類別對象;其次,對如何將東西傳遞給模板感到困惑。您應該首先證明您已經修復了第一個模板,然後我們可以清除任何有關模板的混淆。 –

相關問題