Рассмотрим концепции форм, что бы для нас не было никакой магии.
Задача 1. Понять откдуда и как Джанго рождает формы.
Задача 2. Сразу же уяснить на будущее, что в справке описано только основное. Это я к тому, что многие говорят об ограничении Джанго.
Взгляните на код ниже. Как можно снять все ограничения, конечно же нужно знать Paython. Задачу два мы не будем решать в полном объёме, но вы должны знать, что возможностей у вас столько на сколько хватит вашего творчества.
Когда мы начали изучать формы, конечно можно было бы
просто смотреть справку, но мы не получим
ответов на свои вопросы о концепциях форм в джанго.
Именно поэтому я и записал этот курс, который выходит
за рамки Django документации, а больше относится к
Python.
Мы с вами создали простую форму и выяснили три важные вещи.
Django формы:
- Это обычный объект Python;
- Мы увидели. как Django forms формирует html;
- как за кулисами происходит проверка форм.
Вы скажете зачем так подробно?
Концепция очень важна.
Это то от чего мы отталкиватся будем в будущем.
Понимая. что форма это класс Python? мы автоматически можем применять
к формам ООП.
Тогда уходит вся таинственность и магия и всё становится на свои места.
В процессе курса мы проверяем а действительно ли Django формы
это обычные классы python, а действительно ли они ведут себя, как объекты в классах, автоматическиможем ли мы
обращаться к ним, средствами Python?
Это важно понять сейчас, будет поводом изучить классы или подтянуть кто не знает,
и в конце концов понимать, что нет никакой магии, Django forms - обычные классы
Python.
Есть начало, а за развитием дело не станет.
И тот кто пишет, что для изучения Django Python не нужно знать,
это опрометчиво. Не волнуйтесь, кто не знает Python, он его выучит
в нашей школе, изложен простым языком.
forms.py
Формы можно писать по разному
from django import forms
# Простой вариант
class ConceptForm(forms.Form):
title = forms.CharField(max_length=200)
# Вариант, творческий
class ConceptForm(forms.Form):
def __init__(self, *args, **kwargs):
super(self).__init__(*args, **kwargs)
self.fields['title'].help_text = 'es'
# myapp/forms.py from django import forms from .models import MyModel class MyModelForm(forms.ModelForm): name = forms.CharField(max_length=100, required=True) age = forms.IntegerField(required=True) profession = forms.CharField(required=True) bio = forms.TextField(required=True) class Meta: model = MyModel
from django import forms from .models import MyModel class MyModelForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(MyModelForm, self).__init__(*args, **kwargs) # Making name required self.fields['name'].required = True self.fields['age'].required = True self.fields['bio'].required = True self.fields['profession'].required = True class Meta: model = MyModel
Не нужно переживать. Пока будет не очень понятно, особенно для тех кто недавно столкнулся с пайтон.
Многое сейчас может быть не очень понятно.
Но у меня свои мотивы:
1. Выбросьте с головы, что для Джанго не нужно знать пайтон? для многих это будет
пониманием. что Пайтон нужно и важно подтягивать.
2. Как я говорил, скоро появится приложение, которое сможет добавлять любой участник проекта, где мы будем собирать лучший код. (и много других вещей, каждая в своё время).
3. Шаг за шагом мы ростём, нужно поспешать медленно. И важно сейчас показать, что справка Джанго это всего лишь вершина, а возможности безграничны.