Size: a a a

Django [ru] #STAY HOME

2020 June 28

AD

Alex Dem in Django [ru] #STAY HOME
Slava
Ребят такой вот обширный вопрос.
Что вы используете, а точнее что использовать более грамотно и используют чаще.
Классы: т.е. когда мы в урлах пишем вьюшку как MyView.as_view()
Либо же просто функции ?
Спасибо.
я обычно решаю этот вопрос так:

если view вмещается в несколько строк и обрабатывает любой тип запроса (POST/GET/...) одинаково или работает только с  одним из видов запросов - FBV
если нужно разное поведение для разных видов запросов, или сложная логика вью, я беру CBV

типа, нет смысла усложнять если так и все хорошо, но если ты в попытке упрощения получаешь кашу из кода, то значит не все хорошо и пора сделать CBV
источник

AD

Alex Dem in Django [ru] #STAY HOME
Nire
Тут выбор между миксинами и декораторами. Первое для классов, второе для функций.

Выбирай что больше нравится))
открою секрет, декораторы можно и в классах использовать =)
источник

N

Nire in Django [ru] #STAY HOME
Alex Dem
открою секрет, декораторы можно и в классах использовать =)
Да я в курсе, если что)
источник

N

Nire in Django [ru] #STAY HOME
Но согласитесь, в джанге уже через ооп многие декораторы решены различными параметрами
источник

S

Slava in Django [ru] #STAY HOME
Alex Dem
я обычно решаю этот вопрос так:

если view вмещается в несколько строк и обрабатывает любой тип запроса (POST/GET/...) одинаково или работает только с  одним из видов запросов - FBV
если нужно разное поведение для разных видов запросов, или сложная логика вью, я беру CBV

типа, нет смысла усложнять если так и все хорошо, но если ты в попытке упрощения получаешь кашу из кода, то значит не все хорошо и пора сделать CBV
Что же, понял, спасибо)
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Alex Dem
я обычно решаю этот вопрос так:

если view вмещается в несколько строк и обрабатывает любой тип запроса (POST/GET/...) одинаково или работает только с  одним из видов запросов - FBV
если нужно разное поведение для разных видов запросов, или сложная логика вью, я беру CBV

типа, нет смысла усложнять если так и все хорошо, но если ты в попытке упрощения получаешь кашу из кода, то значит не все хорошо и пора сделать CBV
+++ CBV  это чтобы велосипед не изобретать, для тебя уже все написали и сократили код до пары строк
источник

N

Nire in Django [ru] #STAY HOME
Nikolay Cherniy
+++ CBV  это чтобы велосипед не изобретать, для тебя уже все написали и сократили код до пары строк
Мне вот читать cbv намного сложнее, чем функции. Если уж ускоряться, то в женерики
источник

N

Nire in Django [ru] #STAY HOME
Но имхо, это кому как нравится
источник

EM

Eugene Maltsev in Django [ru] #STAY HOME
указал queryset - указал шаблон - все 🤔
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Nire
Мне вот читать cbv намного сложнее, чем функции. Если уж ускоряться, то в женерики
Это потому что не пользуешься)
источник

S

S.B.A in Django [ru] #STAY HOME
Nikolay Cherniy
А бэдхэдерэррор импортирован? Оттуда же, откуда send_mail. Предположу что ты обработку ошибки откуда-то скопировал, а про импорт забыл.
Верно.
источник

S

S.B.A in Django [ru] #STAY HOME
Спасибо
источник

N

Nire in Django [ru] #STAY HOME
Nikolay Cherniy
Это потому что не пользуешься)
Возможно, но миксины вообще сложно понять, в отличие от декораторов
источник

N

Nire in Django [ru] #STAY HOME
В плане, если их дофига
источник

N

Nire in Django [ru] #STAY HOME
А на миксине ещё миксин)
источник

AD

Alex Dem in Django [ru] #STAY HOME
Nire
Но согласитесь, в джанге уже через ооп многие декораторы решены различными параметрами
честно говоря, не понял это утверждение
о каких параметрах идет речь?
источник

N

Nire in Django [ru] #STAY HOME
Alex Dem
честно говоря, не понял это утверждение
о каких параметрах идет речь?
Ну допустим, ты хочешь сделать на класс бейсид проверку пермишинов. Надо создавать миксин и параметры с функцией, которые требовать перезагрузить в дочернем классе
источник

AD

Alex Dem in Django [ru] #STAY HOME
Nire
Мне вот читать cbv намного сложнее, чем функции. Если уж ускоряться, то в женерики
мне очень нравится читать FBV мимикрующий под CBV

if request.method == 'POST':
...
elif request.method == 'GET':
...

и т.д.
+ с прописанными бизнес-логиками логиками, по классике жанра

открываешь, а у тебя FBV - монолит из 25-30 строк, бабкина простыня :)
источник

N

Nire in Django [ru] #STAY HOME
Alex Dem
мне очень нравится читать FBV мимикрующий под CBV

if request.method == 'POST':
...
elif request.method == 'GET':
...

и т.д.
+ с прописанными бизнес-логиками логиками, по классике жанра

открываешь, а у тебя FBV - монолит из 25-30 строк, бабкина простыня :)
У меня flake8 кучу ифов не пропускает)
источник

N

Nire in Django [ru] #STAY HOME
А на самом деле, внутри питон либ много примеров с кучей ифов
источник