Компоненты формы Django

Во-первых, первоначальный чек регистрации

# Задний 
DEF realreg (Request): 
    ошибка = { ' имя пользователя ' : '' , ' пароль ' : '' } # определить словарную ошибку хранения 
    IF request.method == ' СТОЛБ ' : 
        имя пользователя = request.POST.get ( ' имя пользователя ' ) 
        пароль = request.POST.get ( ' пароль ' )
     IF LEN (пароль) <6. : 
        ошибка [ ' пароль 'знак равно' 密码不能小于6 & lambda ; ' 
    возвращение визуализации (запрос, ' reg.html ' , { ' ошибка ' : ошибка}) 

# 前端 
<входной тип = ' Текст ' имя = ' имя пользователя ' > 
<SPAN> {{error.username} } </ SPAN> 
<входной тип = ' текст ' имя = ' пароль ' > 
<SPAN> {{error.password}} </ SPAN>
  1. Фронтальный интерфейс зарегистрирован, есть форма формы страницы >>> генерировать HTML фронтального код
  2. форма форма, чтобы иметь возможность представить данные в фоновом, фонах не проверить правильность проверки правильности данных >>>
  3. Сообщение должно проверить презентацию на странице >>> назад и проверить отображение информации

  проверочные данные, касающиеся: передний конец с помощью JS код проверки (опция), задний конец через код проверки (обязательно), передний и задний концы, как правило, проверить.

Два, компоненты формы

2.1 возможности

  • Рендер тег
  • Проверьте данные
  • Отображение информации
  • Проверьте информацию

2,2 класс формы

Шаг первый: заказ образуют класс

от Джанго импорта форм 

класса MyForm (forms.Form): 
имя = forms.CharField (max_length = 6 ) 
пароль = forms.CharField (max_length = 8, min_length = 3 ) 
электронная почта = forms.EmailField (требуется = True)

Шаг второй: объекты форм инстанцированы

= MyForm form_obj ({ ' Имя ' : ' moonzier ' , ' пароль ' : ' 123 ' , ' E - mail ' : ' [email protected] ' }) # вступающий словарь

Шаг третий: Проверьте законность проверки данных

form_obj.is_valid () # Только тогда , когда все поля чека вернется Правда

Шаг четвертый: Проверьте сообщение об ошибке проверки

form_obj.errors # которые ставят ошибку поля и не сдавшие контрольную сумму всех 
«» " 
{ 
„имя“: [„Ensure® AT MOST имеет это значение 6 символов (IT имеет 7.)..“], 
„пароль“: [ «Ensure® наименее AT имеет это значение 3 -х символов (имеет 2).»], 
„E - mail“: [ „Введите действительный адрес электронной почты.“] 
} 
„“ "

Шаг пятый: Проверка проверки данных через

form_obj.cleaned_data # соблюдение правил проверки данных будет помещено в объекте

Правило проверки данных формы компонент

  1. Вниз последовательно от значения четности
  2. Проверка проходит в cleaned_data
  3. сбой проверки на ошибки
  4. Все поля формы должны пройти все значения по умолчанию (требуется = True)
  5. Проверьте данные, когда вы можете передать (данные Многоходовые не будет делать какие-либо проверки, правила проверки не влияет на форму)
# Дистальный отменена регистрация 
<форма Action = "" Method = " POST " NOVALIDATE> 
</ form>

2,3 рендеринга этикетки

  опалубочные элементы только оказать помощь вы получите ярлык, введенный пользователем, не поможет вам визуализировать кнопку отправки, вам нужно добавить вручную.

Первая: слабая масштабируемость

Form_obj.as_p} {} { <! - Тег <р> , вынесенное в -> 
{} {} form_obj.as_ul

Второй: один почерк

< Форма Действие = "" > 
< P > {{{{form_obj.name form_obj.name.label}}}} </ P >  <! - Если задний конец имени атрибута не определено, то поле является первой буквой в качестве значения метки -> 
< Р > {{{{form_obj.password form_obj.password.label}}}} </ P > 
< P > {{{{form_obj.email form_obj.email.label}}}} < / P > 
< ВХОД Тип = "Отправить" > 
</ форма >

Третье: для петли

< Форма действия = "" > 
{% для Foo в form_obj%} 
< р > {{foo.label}} {{Foo}} </ р > 
{% ENDFOR%} 
</ форма >

2.4 Вкладка Настройки стиля

Когда форма определения класса, которое предусмотрено в области рисунка.

от Джанго импорта форм
 из `` django.forms`` Импорт Widgets 
пароль = forms.CharField (= MAX_LENGTH 8. , 
                           min_length = 3. , 
                           error_messages, = {
                                ' MAX_LENGTH ' : ' Максимальная длина пароля 8 ' ,
                                ' требуется ' : ' пароль не может быть пустым ' ,
                                « min_length » : ' пароль минимум три' 
                           }, 
                           Виджет = widgets.PasswordInput (ATTRS = { ' класс ' : ' форма С1-контроль " }))   # widgets.PasswordInput пароля в шифротексте, атре увеличить поле

Интегрированный чехол

# Задние 
# определить форму класса 
класс MyForm (forms.Form): 
    имя . = Forms.CharField (MAX_LENGTH = 6 , 
                           метка = ' имя пользователя ' ,   # дистального маркирующие этикетки значения атрибутов , полученные 
                           error_messages = {
                                             ' MAX_LENGTH ' : ' имя_пользователь длинных 6 « » требуемого « : » имя пользователя не может быть пустым " 
                                        }   #Собственное сообщение об ошибке, может быть изменено на китайский язык 
                         ) 
    
DEF REG (Request):
     # генерирует пустой объект 
    form_obj = Myform ()
     IF request.method == ' Почта ' : 
        form_obj = в MyForm (из request.POST)   # из request.POST является словарь, автоматически проверять входящие данные, и возникает ошибка данных , не ясно , 
        ЕСЛИ form_obj.is_valid (): 
            models.User.objects.create ( ** form_obj.cleaned_data)   # используя данные модели формы таблицы компонентов проверка время, только чтобы обеспечить последовательное поле 
        так , когда вы создаете объект непосредственно ** form_obj.cleaned_data
     вернуть рендер (Request, « reg.html » , о местных ())
# 前端 
<форма действие = "" метод = " пост " NOVALIDATE> 
    { % для Foo в form_obj% }
         <р> 
        {{foo.label}} {{Foo}}
         <SPAN> {{foo.errors.0}} </ SPAN>   # 只取第一个错误 
        </ р> 
    { % ENDFOR% }
     <входной тип = " представить " > 
</ form>

В-третьих, функция крюк

Локальная функция Крюк (одно поле с помощью локальной функции четности крюком)

# Проверьте поле имени 666 появляется на ошибки , если 
DEF clean_name (Self): 
    Имя = self.cleaned_data.get ( « имя » )
     ЕСЛИ  « 666 »  в названии: 
        self.add_error ( « имя » , ' свет не достаточно , чтобы назвать 666 , должна быть реальной силой! » )
     возвращение имени # возвращение или добавить, соображение совместимости    

Глобальная функция крюк (с использованием множества проверки полей глобальной функции крюка)

# Четность на пароле и confirm_password последовательных, ошибки не соответствует 
DEF Clean (Self): 
    пароль = self.cleaned_data.get ( ' пароль ' ) 
    confirm_password = self.cleaned_data.get ( ' confirm_password ' )
     IF  Не пароль == confirm_password: 
        Сама .add_error ( ' confirm_password ' , " пароли не совпадают! " )
     возвращение self.cleaned_data    

рекомендация

отwww.cnblogs.com/moonzier/p/11247109.html