Size: a a a

Django [ru] #STAY HOME

2019 April 08

iS

i Seven in Django [ru] #STAY HOME
Alexander Ovchinnikov 🦁
вот взяли бы и сказали "ребята, мы, разработчики Django, призываем вас делать API и всё то, что связано с формами, делать на js, а не использовать вот эти все формы и шаблонизаторы, мы их пока будем поддерживать в рамках внешних приложений, но это пока"
формы на js, типа vue. js? ну это уже больший упор на фронтенд
источник

iS

i Seven in Django [ru] #STAY HOME
Alexander Ovchinnikov 🦁
обычно это не через init делают
а как?
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
i Seven
а как?
я не помню про формы, там вроде был какой-то способ переопределить виджеты для полей
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
если он есть - про него написано где-то в документации
источник

b

ḃ̵͇͠ā̵̙͐k̸̬͗a̵̝͔͊t̸̛̙ȓ̸̭͖o̶̗̯̐ū̵̘͒b̷̬̕l̶͒̏ė̷̯̑ in Django [ru] #STAY HOME
i Seven
если переопределить, то слетят настройки в аутенфикэйшнформ, надо наследоваться.
так наследуйся
class LoginForm(AuthenticationForm):
   username = UsernameField(widget=forms.TextInput(attrs={'autofocus': True, ...}))
   password = forms.CharField(
       label=_("Password"),
       strip=False,
       widget=forms.PasswordInput(attrs={...})
   )
   captcha = ...
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
i Seven
формы на js, типа vue. js? ну это уже больший упор на фронтенд
да
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
ну, как раз в этом и идея - сказать "всё то, что работает в браузере, не нужно делать через Django"
источник

iS

i Seven in Django [ru] #STAY HOME
ḃ̵͇͠ā̵̙͐k̸̬͗a̵̝͔͊t̸̛̙ȓ̸̭͖o̶̗̯̐ū̵̘͒b̷̬̕l̶͒̏ė̷̯̑
так наследуйся
class LoginForm(AuthenticationForm):
   username = UsernameField(widget=forms.TextInput(attrs={'autofocus': True, ...}))
   password = forms.CharField(
       label=_("Password"),
       strip=False,
       widget=forms.PasswordInput(attrs={...})
   )
   captcha = ...
это ужас какой-то... лучше через супер и инит
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
Alexander Ovchinnikov 🦁
если он есть - про него написано где-то в документации
Meta.widgets, вроде
источник

b

ḃ̵͇͠ā̵̙͐k̸̬͗a̵̝͔͊t̸̛̙ȓ̸̭͖o̶̗̯̐ū̵̘͒b̷̬̕l̶͒̏ė̷̯̑ in Django [ru] #STAY HOME
i Seven
это ужас какой-то... лучше через супер и инит
имхо инит в формах — это хтонический ужас
а так берешь из оригинального класса описания полей: https://github.com/django/django/blob/master/django/contrib/auth/forms.py#L166
и правишь под свои нужды
источник

b

ḃ̵͇͠ā̵̙͐k̸̬͗a̵̝͔͊t̸̛̙ȓ̸̭͖o̶̗̯̐ū̵̘͒b̷̬̕l̶͒̏ė̷̯̑ in Django [ru] #STAY HOME
плюс я не уверен что self.captcha = ... вообще будет работать
вроде как поля складываются в fields в метаклассе, в методе __new__
хотя могу и ошибаться
источник

iS

i Seven in Django [ru] #STAY HOME
ḃ̵͇͠ā̵̙͐k̸̬͗a̵̝͔͊t̸̛̙ȓ̸̭͖o̶̗̯̐ū̵̘͒b̷̬̕l̶͒̏ė̷̯̑
имхо инит в формах — это хтонический ужас
а так берешь из оригинального класса описания полей: https://github.com/django/django/blob/master/django/contrib/auth/forms.py#L166
и правишь под свои нужды
с инитом не спорю, как увидел в доке, так и взял за основу.

class BaseAuthorFormSet(BaseModelFormSet):
   def __init__(self, *args, **kwargs):
       super(BaseAuthorFormSet, self).__init__(*args, **kwargs)
       self.queryset = Author.objects.filter(name__startswith='O')

плодить код, который итак написан, тоже плохо.
источник

iS

i Seven in Django [ru] #STAY HOME
ḃ̵͇͠ā̵̙͐k̸̬͗a̵̝͔͊t̸̛̙ȓ̸̭͖o̶̗̯̐ū̵̘͒b̷̬̕l̶͒̏ė̷̯̑
плюс я не уверен что self.captcha = ... вообще будет работать
вроде как поля складываются в fields в метаклассе, в методе __new__
хотя могу и ошибаться
captcha я исправил, она не относится к делу)
источник

iS

i Seven in Django [ru] #STAY HOME
Alexander Ovchinnikov 🦁
ну, как раз в этом и идея - сказать "всё то, что работает в браузере, не нужно делать через Django"
это получается, только модели и вьюхи наши инструменты?
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
ну да
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
Django как генератор API
источник

b

ḃ̵͇͠ā̵̙͐k̸̬͗a̵̝͔͊t̸̛̙ȓ̸̭͖o̶̗̯̐ū̵̘͒b̷̬̕l̶͒̏ė̷̯̑ in Django [ru] #STAY HOME
в общем, твое дело
я бы просто переопределил поля своими
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
в команде Django нет вот таких достаточно сильных людей, которые бы могли сказать: "так, вот вся эта наша хрень с формами и шаблонизаторами устарела, давайте пометим это как legacy"
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
это то, что стоило бы сделать, если фреймворк действительно позиционируется для перфекционистов
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
это подтолкнуло бы больше людей к drf и django-graphene
источник