Форум сайта python.su
Здравствуйте. Нужно выводить из БД на страничку список телеканалов с их статусом. Сделал так:
в шаблон передаю словарь такого вида: data{id:info{}}. То есть словарь со словарями. В первом словаре ключ - это id в БД, в словаре, который доступен по этому ключу - вся информация о канале. Конкретный пример:
data{1:{'name':'channelname', 'state':True}}
{% for id,info in data.items %} {% if info.state %} <tr bgcolor="#9dde8c"> {% else %} <tr bgcolor="#f89090"> {% endif %} ...тут ничего интересного: из info по ключу достаём данные и заполняем таблицу... {% endfor %}
class Channels(models.Model): name = models.CharField(max_length=100) group_name = models.CharField(max_length=100) ip = models.TextField(max_length=16) port = models.IntegerField(max_length=5) screenpath = models.CharField(max_length=900) state = models.BooleanField() def __unicode__(self): return '%s %s %s %s %s %s %s' % (self.id, self.name, self.group_name, self.ip, self.port, self.screenpath, self.state)
def index(request): data = {} for i in ch.objects.all().order_by('id'): info = {} raw_data = str(i).split(' ') dbid = raw_data[0] info['id'] = dbid info['name'] = raw_data[1] info['group_name'] = raw_data[2] info['ip'] = raw_data[3] info['port'] = raw_data[4] info['screenpath'] = raw_data[5] if raw_data[6] == 'True': info['state'] = True else: info['state'] = False data[dbid] = info t = get_template('index.html') html = t.render(Context({'data': data})) return HttpResponse(html)
Отредактировано UsCr (Июнь 10, 2012 13:32:43)
Офлайн
1. Забудьте про логику в шаблонах.
2. Почитайте про кастомные теги/фильтры.
3. Если не понравилось, думайте, как обходиться вьюхами, и передавать более простой вариант в шаблон.
4. Почитайте документацию, можно довольно бегло.
Офлайн
fata1exСпасибо за отклик. А насчет запросов в базу? Так это и должно выглядеть?
Офлайн
Разумеется, нет. Чтобы это понять, достаточно прочитать хотя бы официальный туториал.
Офлайн
В очередной раз пропагандирую за отказ от функций-представлений, разумнее удобней и проще юзать классы.
Class Based Views в Джанге - это сила и красота питонячьего кода, у Вас пропадет желание строить велосипеды, я гарантирую это.
Офлайн
FishHookа не могли бы предоставить пример просто представления, и его замены через то что вы пропагандируете.
В очередной раз пропагандирую за отказ от функций-представлений, разумнее удобней и проще юзать классы.
Class Based Views в Джанге - это сила и красота питонячьего кода, у Вас пропадет желание строить велосипеды, я гарантирую это.
Офлайн
FishHook, не так давно было несколько постов в разных блогах о “за и против” CBV. Есть как плюсы решения, так и минусы, не надо быть столь категоричным :)
Например.
PS. ilnur, неужели сложно набрать в поисковике ‘class based view’, о которых говорилось выше?
Отредактировано fata1ex (Июнь 11, 2012 21:14:32)
Офлайн
fata1ex>>>Есть как плюсы решения, так и минусы, не надо быть столь категоричным
FishHook, не так давно было несколько постов в разных блогах о “за и против” CBV. Есть как плюсы решения, так и минусы, не надо быть столь категоричным
Например.
PS. ilnur, неужели сложно набрать в поисковике ‘class based view’, о которых говорилось выше?
Отредактировано FishHook (Июнь 11, 2012 21:44:59)
Офлайн
FishHook, опыт у меня небольшой, а вот автору непонятного ресурса я верю, так как периодически вижу его сообщения в django-dev рассылке. Думается мне, он разбирается в концепциях ООП куда лучше нас с вами. Ну и как бы.
А вообще, не стоит воспринимать так всё в штыки. Я лишь предложил пищу для размышлений. Вот ещё чуть-чуть.
Отредактировано fata1ex (Июнь 11, 2012 22:04:02)
Офлайн
fata1exКоллега, какие штыки, о чем Вы?
FishHook, опыт у меня небольшой, а вот автору непонятного ресурса я верю, так как периодически вижу его сообщения в django-dev рассылке. Думается мне, он разбирается в концепциях ООП куда лучше нас с вами. Ну и как бы.
А вообще, не стоит воспринимать так всё в штыки. Я лишь предложил пищу для размышлений. Вот ещё чуть-чуть.
Отредактировано FishHook (Июнь 11, 2012 22:28:24)
Офлайн