Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как получить данные в шаблоне используя TemplateView [RSS Feed]

#1 Авг. 4, 2012 13:47:53

Saturn
От:
Зарегистрирован: 2012-03-22
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить данные в шаблоне используя TemplateView

Помогите разобраться, почему не могу принять данные в шаблоне.

##views.py
class Sorted(TemplateView):
    template_name = "category.html"
    
def get_context_data(self, **kwargs):
    context = super(Sorted, self).get_context_data(**kwargs)
    context['brands'] = Brand.objects.all()
    context['sizes'] = Size.objects.all()
    return context


#urls.py
from product.views import Sorted
url(r'^(?P<sect>\w+)/cat/(?P<cat>\d+(-\d+)*)/$', Sorted.as_view()),


В шаблоне принимаю
{% for brand in brands %}
	<label class="checkbox">
	<input type="checkbox">
	<a href="/man/brand/{{ brand.id }}/">{{ brand.name }}</a>
	</label>
{% endfor %}

В результате возвращает пустой шаблон, но данные не выводит.



Отредактировано Saturn (Авг. 4, 2012 15:41:18)

Офлайн

#2 Авг. 4, 2012 14:17:06

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Как получить данные в шаблоне используя TemplateView

Вы представляете себе, что такое класс и наследование?



Офлайн

#3 Авг. 4, 2012 14:48:13

Saturn
От:
Зарегистрирован: 2012-03-22
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить данные в шаблоне используя TemplateView

fata1ex
Вы представляете себе, что такое класс и наследование?
Да представляю, но не в полной степени. А что ?



Офлайн

#4 Авг. 4, 2012 14:59:45

adw0rd
От: Санкт-Петербург
Зарегистрирован: 2012-07-28
Сообщения: 107
Репутация: +  8  -
Профиль   Отправить e-mail  

Как получить данные в шаблоне используя TemplateView

#models.py
class Sorted(TemplateView):

и

from product.views import Sorted

вам не кажется это странным?

И еще, перед "return context" сделайте вывод в консоль, есть там что? А лучше используйте debug_toolbar или pudb, например




Python, Django, Flask, Git, Emacs, Nginx, MySQL, SphinxSearch, Redis, Linux, FreeBSD
Мой блог, я на GitHub

Отредактировано adw0rd (Авг. 4, 2012 15:03:57)

Офлайн

#5 Авг. 4, 2012 15:12:55

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Как получить данные в шаблоне используя TemplateView

Saturn
#models.py
class Sorted(TemplateView):
    template_name = "category.html"
    
def get_context_data(self, **kwargs):
    context = super(Sorted, self).get_context_data(**kwargs)
    context['brands'] = Brand.objects.all()
    context['sizes'] = Size.objects.all()
    return context
Это как вообще? Почитайте про то, что такое методы у классов.

Именно поэтому надо сначала учить питон. Или хотя бы учить его параллельно.



Отредактировано fata1ex (Авг. 4, 2012 15:13:51)

Офлайн

#6 Авг. 4, 2012 15:38:53

Saturn
От:
Зарегистрирован: 2012-03-22
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить данные в шаблоне используя TemplateView

adw0rd
Да, действительно, неправильно написал.
Должно быть

#views.py
class Sorted(TemplateView):

debug_toolbar
Показывает что нету SQL запросов к данным моделям.



Офлайн

#7 Авг. 4, 2012 16:14:44

Saturn
От:
Зарегистрирован: 2012-03-22
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить данные в шаблоне используя TemplateView

Действительно не заметил что в моем случае метод get_context_data не относится к данному
классу Sorted. Теперь все работает.

class SortedView(TemplateView):
    template_name = "category.html"
    
    def get_context_data(self, **kwargs):
        context = super(SortedView, self).get_context_data(**kwargs)
        cat = self.kwargs.get('cat', 1).replace("-",",")
        context['categories'] = Category.objects.filter(sect_id = get_section(self.kwargs.get('sect', None)))
        context['brands'] = Brand.objects.all()
        context['sizes'] = Size.objects.all()
        context['products'] = Product.objects.extra(where=['category_id IN (' + cat + ')']).select_related("brand")
        return context



Отредактировано Saturn (Авг. 4, 2012 16:15:45)

Офлайн

#8 Авг. 4, 2012 19:36:30

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Как получить данные в шаблоне используя TemplateView

Кстати

cat = self.kwargs.get('cat', 1).replace("-",",")
Если ‘cat’ не будет в kwargs,
1.replace("-", ",") # AttributeError: 'int' object has no attribute 'replace'

Да и незачем опускаться до raw:
context['products'] = Product.objects.extra(where=['category_id IN (' + cat + ')'])
когда можно:
categories = self.kwargs.get('cat', "1").split("-")
context['products'] = Product.objects.filter(category_id__in=categories)

Отредактировано reclosedev (Авг. 4, 2012 19:37:00)

Офлайн

#9 Авг. 4, 2012 20:19:05

Saturn
От:
Зарегистрирован: 2012-03-22
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить данные в шаблоне используя TemplateView

reclosedev
Дак у меня “cat” c url берется, если его не будет тогда Page not found 404

url(r'^(?P<sect>\w+)/cat/(?P<cat>\d+(-\d+)*)/$', SortedView.as_view()),

когда можно:
categories = self.kwargs.get('cat', “1”).split(“-”)
context = Product.objects.filter(category_id__in=categories)

Спасибо, так действительно намного лучше.



Отредактировано Saturn (Авг. 4, 2012 20:24:03)

Офлайн

  • Начало
  • » Django
  • » Как получить данные в шаблоне используя TemplateView[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version