
Валентин
01.02.2019
10:48:23
тут с терминами сложно
Вью отправляет запрос контроллеру
Контроллер выполняет бизнес логику, заложенную в модели и решает, какой вью рендерить

Vasia
01.02.2019
10:48:26
он ломает все

Kirill Boev
01.02.2019
10:48:29
http://ipic.su/img/img7/fs/kiss_39kb.1549018096.png

Валентин
01.02.2019
10:48:33
Вью и модель явно не связаны вообще

Google

Tishka17
01.02.2019
10:48:34
это могли быть вьюхи jsonrpc и rest

A
01.02.2019
10:49:00

Tishka17
01.02.2019
10:49:03

Валентин
01.02.2019
10:49:15
Да

Tishka17
01.02.2019
10:49:17
Да
то есть view парсит ввод и отдает в понятном контроллеру виде?

A
01.02.2019
10:49:34
точно никакого обхода нету?

Vasia
01.02.2019
10:49:39
нет
мы все здесь сидим и страдаем

Tishka17
01.02.2019
10:49:48

Vasia
01.02.2019
10:49:55
только С++ бояре наслаждаются скоростью

Валентин
01.02.2019
10:50:19

Tishka17
01.02.2019
10:50:20
а ещё у меня проблема в этих MV* кто ссылку на кого хранит

Google

Валентин
01.02.2019
10:50:33
в случае с аргументами консоли скорее это работа контроллера

Рамиль
01.02.2019
10:50:46
Кто может скинуть ссылку на хорошую группу по c++? Только не баньте?

A
01.02.2019
10:51:33
Здравствуйте

Валентин
01.02.2019
10:51:36

Tishka17
01.02.2019
10:51:37

?? Eugene
01.02.2019
10:51:40

Валентин
01.02.2019
10:51:48
контроллер на вью, чтобы возвращать их пользователю
возможно вью на контроллер, если технически это нужно
если вью это хтмл страница, то она явно не имеет же ссылок на твой контроллер на бэкенде
имеет только роуты, куда стучать

Tishka17
01.02.2019
10:53:31

Рамиль
01.02.2019
10:53:47

Vasia
01.02.2019
10:54:29
естественно о рычагах контроллера вью знает
она не знает о логике внутри рычагов, просто отправляет данные и все

Tishka17
01.02.2019
10:54:52
То есть должен быть абстрактный контроллер
Интерфейс

Vasia
01.02.2019
10:54:58
нет
должен быть конкретный контроллер с логикой

Валентин
01.02.2019
10:55:14
просто у контролера должен быть интерфейс, через который вью с ним общается

Maxim robox
01.02.2019
10:55:19
@Tishka17 чисто на всякий случай скажу, поскольку у тебя бекграунд на фласке, во фласке не mvc. Там можно сделать как угодно, но как правило там не mvc. Из того, что видел я, там был MTV (model template view), как и в джанго.
А то вдруг ты из-за этого голову ломаешь.

Google

Tishka17
01.02.2019
10:55:45

Vasia
01.02.2019
10:55:54
у тебя каша в голове, ты должен понять причину архитектыр mvc - когда ты пихаешь логику везде, то это сложно во первых разделять для рефакторинга, во вторых поддерживать

Tishka17
01.02.2019
10:56:00
Но да, фласк портит

Vasia
01.02.2019
10:56:21
для этого придумали что вью просто отображает, контроллер преобразует, модель хранит
контроллер преобразует в обе стороны

Tishka17
01.02.2019
10:56:45

Валентин
01.02.2019
10:56:56
напрямую это как?
функция контроллера, которая вызывается вью, это и есть интерфейс же

Tishka17
01.02.2019
10:57:42
Напрямую - это фиксированный класс. Или прям сама создаёт инстанс

Валентин
01.02.2019
10:57:57
интерфейс тут не в смысле какая-то абстракция

Vasia
01.02.2019
10:58:04
тест создает

Валентин
01.02.2019
10:58:08
а в смысле просто соглашение о том, как общаются вью и контроллер
через какие методы, какие параметры и тд
у тебя может быть 1 класс контроллера без всяких абстракций
все его публичные методы, которые юзает вью - это его интерфейс для вью

Vasia
01.02.2019
10:58:47
после джавы или сишарпа сложно привыкнуть что куча абстракций в питоне не нужны
я первое время постоянно тосковал по IClassInterface

Tishka17
01.02.2019
10:59:15

Vasia
01.02.2019
10:59:24
ну, мне пока это ничего не нужно

Bogdan (SirEdvin)
01.02.2019
10:59:35

Google

Владимир
01.02.2019
11:00:10

Tishka17
01.02.2019
11:00:40
https://www.python.org/dev/peps/pep-0544/

Terminator
01.02.2019
11:05:36
@var_name будет жить. Поприветствуем!

Валентин
01.02.2019
11:06:18
а, так это уже есть
в 3.7

Showly
01.02.2019
11:07:40
Нужно аналог сайта сделать, используя готовую API. Если кому интересна подработка , пишите в ЛС, пожалуйста.

Tishka17
01.02.2019
11:14:48

Bogdan (SirEdvin)
01.02.2019
11:16:24

Tishka17
01.02.2019
11:20:40

?? Eugene
01.02.2019
11:22:21

Tishka17
01.02.2019
11:22:29
Просто сейчас нет возможности сделать аннотацию для проверки что у всех переданных объектов есть нужный метод

Bogdan (SirEdvin)
01.02.2019
11:22:48
Или опять же, абстрактные классы)
Возможно я не совсем понимаю проблему)

Валентин
01.02.2019
11:23:52
смотри, ты zope ты явно указываешь реализацию

Tishka17
01.02.2019
11:23:53
а в питоне вообще-то утиная типизация

Валентин
01.02.2019
11:24:09
class Foo:
zope.interface.implements(IFoo)
в утиной типизации по-другому

Google

Валентин
01.02.2019
11:24:34
есть интерфейс Writable

Tishka17
01.02.2019
11:24:42
давай на прмиере

Bogdan (SirEdvin)
01.02.2019
11:24:48
А, до меня дошло)

Валентин
01.02.2019
11:24:54
у него должен быть метод write с 1 параметром, например
ты нигде не пишешь в своем классе про Writable

Bogdan (SirEdvin)
01.02.2019
11:25:07
Ну да, в mypy костыли, поэтому никак :(

Валентин
01.02.2019
11:25:09
ты просто пишешь в классе метод write с таким же параметром

Tishka17
01.02.2019
11:25:19
да!

Bogdan (SirEdvin)
01.02.2019
11:25:38
Хотя
Стоп
Все равно можно сделать subclass_hook что бы в рантайме правильно проверять
И наследование не нужно

Tishka17
01.02.2019
11:26:31
class Writer(Protocol):
def write(self, arg): pass
class RealWriter:
def write(self, arg): pass
def work(writer: Writer):
writer.write(1)
вот теперь тебе надо чтобы work(RealWriter()) анализтор съел, а work(1) - нет
вот с протоколами это весь код, который нужен

Bogdan (SirEdvin)
01.02.2019
11:27:42
Ну, если мы говорим про mypy, так все плохо, так что да :)

Tishka17
01.02.2019
11:28:13
да не в mypy дело, а в коде

Валентин
01.02.2019
11:28:15
статья на вики на всякий про это дело
https://ru.wikipedia.org/wiki/Утиная_типизация

Tishka17
01.02.2019
11:28:33
PEP про то, как прмиенить аннотации типов к утиной типизации