Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 10, 2007 03:34:47

Izvr
От:
Зарегистрирован: 2007-12-10
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка форм, небольшой вопрос

Собственно рисую в шаблоне форму
<form action=“advertisement_add” method=“post”>
<p><b>Keyword</b></p>
<input type=“text” name=“keyword” size=“40” />
<p><b>Price, $0.01</b></p>
<input type=“text” name=“price” size=“40” />
<p><b>Advertising Platform</b></p>
<ul>
<li py:for=“platform in platforms”>
<input type=“checkbox” name=“${platform.id}” value=“${platform.name}”/>
<span>${platform.name}</span>
</li>
</ul>
<p><b>Clicks</b></p>
<table>
<tr>
<th py:for=“weight in weights” py:content=“weight.name” />
</tr>
<tr>
<td py:for=“weight in weights”>
<input type=“text” name=“${weight.id}” value=“0”/>
</td>
</tr>
</table>
<input type=“submit” name=“add” value=“Add” />
</form>
Как видно из кода, у меня есть список checkbox`ов и текстовых полей, но что при этом надо передавать обработчику в качестве параметров? У меня не фиксировано количество ни весов ни кликов.



Офлайн

#2 Дек. 10, 2007 05:10:16

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Обработка форм, небольшой вопрос

Если я правильно понял вопрос, то речь идет об обработчике формы?
Тогда поставте у обработчика параметры platform и weight
FormEncode обрабатывает имена вида weight.id и отдает их в виде списка weight:



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Дек. 10, 2007 07:04:22

Izvr
От:
Зарегистрирован: 2007-12-10
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка форм, небольшой вопрос

PooH
Если я правильно понял вопрос, то речь идет об обработчике формы?
Тогда поставте у обработчика параметры platform и weight
FormEncode обрабатывает имена вида weight.id и отдает их в виде списка weight:
Вот такой обработчик при выполнении
@expose()
def advertisement_add(self, keyword, price):
import time
выдает следующую ошибку
TypeError: advertisement_add() got an unexpected keyword argument ‘1’
что в общем то весьма логично
если ему в параметрах добавить, указанную вами переменную
@expose()
def advertisement_add(self, keyword, price, weight):
import time
он скажет
TypeError: advertisement_add() takes at least 4 non-keyword arguments (3 given)
Я вот думаю, может быть такой финт не предусмотрен?
У меня почему то не получилось использовать виджеты, насколько я понял там передается весь экземпляр формы и такой проблемы не возникает.



Офлайн

#4 Дек. 10, 2007 08:56:37

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Обработка форм, небольшой вопрос

Используйте декоратор @validate для обработчика http://docs.turbogears.org/1.0/ValidateDecorator
его можно использовать и без виджетов, он обработает вам параметры как я писал, или объявляйте обработчик как

def advertisement_add(self, *args, **kw):
и разгребайте параметры врукопашную.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version