Как в Django 1.5.4 реализовать валидацию и обработку присланных данных?

Есть форма:

<form method="post" action="">
    <fieldset id="books">
        <legend>Книги прочитанные в этом году:</legend>
        <p  class="cloneMe">
            <label>Название: <input type="text" name="book_title[]" /></label>
            <label>Автор: <input type="text" name="book_author[]" /></label>
        </p>
        <button type="button" id="js-clone">Добавить</button>
    </fieldset>
    <input type="submit" value="отправить" />
</form>


И джаваскрипт:

$('#js-clone').on('click', function () {
    var $clones = $('.cloneMe:last').clone();
    $clones.find('input').val('');
    $(this).before($clones);
});


Пример на jsfiddle.net.

Вопрос в том, как в джанго (Django==1.5.4) реализовать валидацию и обработку присланных данных?
  • Вопрос задан
  • 2893 просмотра
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
@alz
Кастомные виджет и поле нужны

from django import forms
from django.utils.datastructures import MultiValueDict, MergeDict

class Widget(forms.widgets.Widget):
    def value_from_datadict(self, data, files, name):
        if isinstance(data, (MultiValueDict, MergeDict)):
            return data.getlist(name)
        return data.get(name, None)

    def render(self, name, value, attrs=None):
        pass # TODO: render widget

class Field(forms.Field):
    def to_python(self, value):
        if not value: return []
        return filter(None, value)


Это самая примитивная реализация. Без дополнительных проверок и без рендера виджета
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы