№1 Практическая онлайн-школа обучения языкам программирования Python (Django), JavaScript, Kotlin В. Бовсуновского.

Специальная, подарочная акция получения доступа к Django4!

Как, я, начал код писать в Python? Смотрите, если уперлись и ничего не получается.

2. Подготовим наш Django проект для работы с формами.

С учётом того, что мы ранее изучили git + django + vs code. давайте использовать git, для облегчения повседневной работы.

НЕт смысла тренировать формы в нашем основной проекте, что бы не делать кавардак, создадим ветку и там будем тренироваться с формами.

Вот наш план работы с формами.

-

"""




https://docs.djangoproject.com/en/4.0/#forms
todo: Работа с формами.

? Создать приложение app_form.

? Увидеть из чего состоят формы.

? Понять поля форм.

? Понять виджеты форм.

? Разобраться с API форм:
    1. В Jupyter
    2. В реальной форме увидеть применение..
                     
? Разобраться с методами форм в двух ваиантах:
    1. В Jupyter
    2. В реальной форме увидеть применение.

? Глубже освоить формы из моделей.    

"""

Перейти к уроку

3. Подготовим app для изучения form в django в новой ветке git.

нам нужно подготовить все для нормального, подробного изучения form Django, создадим app и файл для jupyter notebook.

Как вы увидели, я немного тупанул и у нас в основную ветку затесались disscusions и forms_app(это прекрасно), вам необходимо это исправить, что бы больше не повторять. (домашнее задание. Сбросить в группу.

Как вы решили этот вопрос и в чём была причину и решение.

-

Перейти к уроку

4. Глубокое погружение в формы Django (начало).

Прежде, чем начать детальное рассмотрение. хорошо бы осознать из чего состоит форма. что она есть, как устроена, что в ней основное.

Давайте поступим так.

Рассмотрим готовую форму, поймём отличия с моделью и разберём важные мелочи, почему в форму передаются именно аргументы (а допустим не называется, как в моделях, настройки полей).

И прогоним исходный код, через jupyter. я вам напомню Питон. что бы понимание уже стало на все 100. Это у нас будет отличный старт в формах - земля появится под ногами.

-

django-form

parametrs python


Напомню вам Python.

-

#



"""

def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):

    pos = pos1 + pos2

    p_or_k = 'argu' + pos_or_kwd

    kwd = kwd1 + kwd2

    return pos, p_or_k, kwd

 """  

"\ndef f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):\n    pos = pos1 + pos2\n    p_or_k = 'argu' + pos_or_kwd\n    kwd = kwd1 + kwd2\n    return pos, p_or_k, kwd\n "

def f(pos1, pos2, /):

    pos = pos1 + pos2

    return pos

f(pos1 = 5, pos2=6)

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/tmp/ipykernel_61037/258070995.py in <module>
----> 1 f(pos1 = 5, pos2=6)

TypeError: f() got some positional-only arguments passed as keyword arguments: 'pos1, pos2'

f(5, 6)

11

def f (pos_or_kwd):

    var = pos_or_kwd + "ork"

    return var

f('w')

'work'

f(pos_or_kwd="w")

'work'

def f(*, kwd1, kwd2):

    kwd = kwd1 + kwd2

    return kwd

f('wo', 'rk')

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/tmp/ipykernel_61037/442069058.py in <module>
----> 1 f('wo', 'rk')

TypeError: f() takes 0 positional arguments but 2 were given

f(kwd1='wo', kwd2='rk')

'work'

Перейти к уроку

5. Исходный код Django. Учимся видеть и читать слои кода и соединять в голове с документацией.

Откройте этот файл исходного кода django-form.

Откройте сейчас и до урока и посмотрите.

У вас есть ощущение, что это просто код и не понятно ни где начало ни где конец ни на что смотреть и как вообще в этом разобраться?

Как то в одном интервью создатель Линукс Линус сказал такую фразу (он часто на этом акцентирует внимание)

Цитата: -"мне нравятся программисты. которые видят слои кода."

Скорее всего вы не найдёте в Википедии многоуровневую архитектору кода - это немного нет.

Мы сейчас не говорим от том что нужно разделить к примеру бизнес логику и нечто другое.

Мы говорим о чтении кода в конкретном файле и умении выделять слои(архитектуру построения самого кода, как стиля).

Давайте научимся понимать исходный код слоями, что облегчит чтение кода, мы будем понимать с чего начинать читать код в файле, далее легко выстроить и эжу саму архитектуру.

Джанго в этом примере очень крут, он структурирован очень хорошо и очень понятно.

Так же я часто рекомендую смотреть исходный код

https://beeware.org

Вы почувствуете один и тот же почерк кода, да, да потому что Рассел Кейт Магги является ведущим разрабочиком Джанго.

Поэтому давайте учится у этих людей. как выстраивать код, что бы это было профессионально.

Но для начала давайте поймём м чего начать читать код.

На выходе:

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

на выходе мы должны чётко расставить в голове API.

Это важный момент, API в документации в куче.

Именно программист должен расставить в голове API (если этого не сделать, то мы конечно можем проделать API, но у нас будет постоянное ощущение не до понимания, плавания).

Мы с вами расставим в голове API, при помощи просмотра документации и просмотра исходного кода и нам будет понятно:

что передать как аргументы в поле формы. (из чего то оно состоит это поле тоже хорошо бы понять).

Что применять, как методы в представлении.

Ну и в конце концов домашнее задание. Посмотреть код toga. Вы уловите один и тот же стиль кодирования с него и учитесь.

Перейти к уроку

6. Посмотрим на API соберём в голове всю документацию вокруг API.

План я написал, но прежде чем вплотную перейти к формам, подготовим профессиональную почву.

Нам нужно посмотреть на API опять с позиции исходного кода и научится в API различать методы и аргументы, опять же разобраться что где будем применять и дальше мы пройдём по всем пунктам документации собирая до кучи все к API.

filds

def __init__(self, *, required=True, widget=None, label=None, initial=None,
                 help_text='', error_messages=None, show_hidden_initial=False,
                 validators=(), localize=False, disabled=False, label_suffix=None):

form

# argumetns
def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
                 initial=None, error_class=ErrorList, label_suffix=None,
                 empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None):
  1. Проработать документацию.

  2. Создать форму.

  3. Отработать API.

  4. Разделить в голове аргументы и методы:

     аргументы в полях использовать. (в полях не забыть про виджеты)
    
     методы использовать в представлениях.
     написать представление для формы (обратить внимание на загрузкук файлов.)
    
  5. Формы из моделей.

  6. media контент.

  7. Тонкости(настройки) формы из моделей. (это наше основное)

class ContactForm(forms.Form):
    subject = forms.CharField(max_length=100)
    message = forms.CharField(widget=forms.Textarea)
    sender = forms.EmailField()
    cc_myself = forms.BooleanField(required=False)

Formset - домашнее задание.

Перейти к уроку