Найти - Пользователи
Полная версия: Обработка форм, небольшой вопрос
Начало » Pyramid / Pylons / TurboGears » Обработка форм, небольшой вопрос
1
Izvr
Собственно рисую в шаблоне форму
<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`ов и текстовых полей, но что при этом надо передавать обработчику в качестве параметров? У меня не фиксировано количество ни весов ни кликов.
PooH
Если я правильно понял вопрос, то речь идет об обработчике формы?
Тогда поставте у обработчика параметры platform и weight
FormEncode обрабатывает имена вида weight.id и отдает их в виде списка weight:
Izvr
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)
Я вот думаю, может быть такой финт не предусмотрен?
У меня почему то не получилось использовать виджеты, насколько я понял там передается весь экземпляр формы и такой проблемы не возникает.
PooH
Используйте декоратор @validate для обработчика http://docs.turbogears.org/1.0/ValidateDecorator
его можно использовать и без виджетов, он обработает вам параметры как я писал, или объявляйте обработчик как
def advertisement_add(self, *args, **kw):
и разгребайте параметры врукопашную.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB