@pydjango

Страница 298 из 1273
Centrino
03.06.2017
10:19:13
со скольки методов стоит смотреть в сторону rest?

для трех?

Eugene
03.06.2017
10:19:59
Можно и для удобства заюзать:D

Dan
03.06.2017
10:21:01
думаю когда у тебя от 2-х и более приложений!! в каждом приложении N моделей и API может создавать, удалять, отдавать объект или список объектов

Google
Centrino
03.06.2017
10:21:50
есть какой-нибудь хороший пример как апи писать? Хочу попробовать самому сделать

Dan
03.06.2017
10:22:22
у меня под рукой нет =)

Eugene
03.06.2017
10:26:15
У swagger спецификация топовая была

Centrino
03.06.2017
10:28:45
swagger это кто?

Eugene
03.06.2017
10:29:50
swagger это что:D

http://swagger.io/specification/

Eugene
03.06.2017
10:30:17
есть какой-нибудь хороший пример как апи писать? Хочу попробовать самому сделать
зацени код какого-нить проекта на джанго который api юзает. например misago или taiga.io

Centrino
03.06.2017
10:30:33
спасибо, посмотрю

Рустам
03.06.2017
10:32:01
Ну у меня порядка 10-15 функций будет

Точнее они уже есть

Но они рендерят шаблон

Теперь мне надо чтобы они json-ом отдавали

Centrino
03.06.2017
10:33:29
можно context переделать под json быстро

Google
Рустам
03.06.2017
10:34:00
Ну да

Я так и планировал

Просто слышал что-то про рест

И что его делают для бэкэнда приложений

Вот и подумал

Artem
03.06.2017
10:51:13
Ты можешь в принципе расширить свой проект, дополнительной аппкой для API и уже там релизовать сериализаторы с уже заготовленными кверисетами, будет красиво и аккуратно!

Alexander
03.06.2017
11:30:25
а вот, допустим, у нас классическое приложение, без API и прочего такого, с обычными CBV, MVC как вы выбираете, от какого класса наследоваться в ситуациях, когда подходит сразу несколько вариантов, к примеру, некая страница пользователя (профиль) и там же форма редактирования этого профиля

DetailView + UpdateView

Сергей
03.06.2017
11:31:37
я бы выбрал функцию

Alexander
03.06.2017
11:32:41
и там же, допустим, какой-нибудь список объектов, созданных этим пользователем, то есть даже ListView + DetailView + UpdateView если использовать CBV

я бы выбрал функцию
мне интересен вот этот дзен джинги

какое каноническое решение предлагается? сделать свой CBV с миксинами от ListView + DetailView + UpdateView

допустим, если цель - написать как можно меньше своего кода

Eugene
03.06.2017
11:34:53
Я бы наверное выбрал DetailVIew + UpdateView в первом.

+ миксины.

Alexander
03.06.2017
11:37:28
есть вариант сделать 2 страницы, 2 view, одну для обработки формы (туда она отправляется), вторую просто для отображения

то есть отдельно ListView и/или DetailView и отдельно UpdateView

при попытке GET UpdateView там будет Method Not Allowed (GET) или 302 редирект на ListView и/или DetailView

как вы считаете, это лучше, чем комбинировать всё в 1 view?

Rookie
03.06.2017
11:51:33
при попытке GET UpdateView там будет Method Not Allowed (GET) или 302 редирект на ListView и/или DetailView
Зависит от сложности апдейта, имхо. Если там название | число поменять, то зачем лишние вьюхи гродить. Прямо там аяксом всё сделать.

Google
Alexander
03.06.2017
11:54:02
окей, усложним задачу, допустим, это какой-нибудь фэйсбук) и там много форм на странице профиля (редактирование профиля, написание нового сообщения, написание вопроса в техподдержку, написание отзыва/комментария к какому-либо видео), там разные списки (видео юзера, фотки юзера), там сами данные юзера (имя, фамилия), допустим, без Vue.js и API (ну, у нас такой вот пример, всё на стороне сервера и генерируется и обрабатывается Django )

вот в таком случае имеет смысл выделять несколько UpdateView отдельно?

мне хочется понять Django way в данном случае, какой канонический путь решения этой задачи предлагают разработчики - набирать 1 охрененно большую View из разных Mixin'ов или сделать несколько Views

Pavel
03.06.2017
12:06:08
Если есть много форм, и хочется их в одном submit обрабатывать, то я бы сделал несколько разных форм, пачка FormView для каждой формы и одна View, которая вызывает post последовательно в каждой FormView.

Alexander
03.06.2017
12:06:31
а если без API - вот, допустим, у нас есть некий DetailView, там просто показывается профиль и куча всего ещё, на нём отображается некая форма, которая самбитится на некий другой url, где её обрабатывает UpdateView... в случае успеха там редирект снова на эту DetailView, а в случае ошибок там метод form_invalid, то есть генерится некая форма с ошибками, мне вот интересно, а можно ли как-нибудь получить это внутри DetailView? есть у Django вот эти интеграции , что-то я не помню..

сохранить её в request?

если переопределить form_invalid (помещает форму с ошибками в request и делает редирект на DetailView) у UpdateView, внутри DetailView я смогу получить доступ к этой форме с ошибками (в get_context_data записать её ) или?..

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

Alexander
03.06.2017
12:18:26
а если без ajax?

Rookie
03.06.2017
12:18:45
А почему без аякс?

Alexander
03.06.2017
12:19:42
ну вот, допустим, я хочу просто POST'ом как обычно отправлять форму на UpdateView, а результаты смотреть на DetailView

я могу передавать это на стороне питона как-то?

это больше такой академический пример

Rookie
03.06.2017
12:21:13
Без проблем.

Определяй формам префиксы, чекай в POST наличие твоей формы.

Но, имхо, это огород.

Google
Alexander
03.06.2017
12:22:11
как правильно передать всё из 1 view в другую?

вот есть UpdateView, там на этапе форм инвалид сформировалась форма с ошибками и вместо рендеринга её средствами UpdateView я хочу передать её внутрь контекста DetailView и передать управление уже DetailView дальше

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

но да, это может выглядеть немного извращением)

это может быть полезно в случае, допустим, если заранее известно, что в браузере js намеренно был выключен

какие-нибудь проекты для скрытосетей

то есть нельзя сделать ajax запрос

Rookie
03.06.2017
12:28:35
Не пробовал так, если честно. Не уверен, что будет работать kwargs update. Но, если бы меня сильно припекло сделать ИМЕННО ТАК, я бы писал в сессию, делал ридерект куда надо, и брал из сессии.

Ну, reverse ещё есть, да.

Admin
ERROR: S client not available

Ahmed
03.06.2017
13:20:30
Ребята, как называется фильтр в шаблонизаторе который фильтрует по номера. К примеру есть 2 объекта, и каждый объект надо вывести на странице, в одном месте чтобы постоянно выводился только объект под номер 0, а в другом месте объект под номером 1.

vadim
03.06.2017
13:28:42
как правильно передать всё из 1 view в другую?
это костыльный костыль и такой подход обеспечит лишь насыл поноса со стороны других разрабов. все формы из миксинов базовых состоят - посмотреть что миксуется там и там выбрать общее и оверрайдить метод get со своей логикой и DetailView - как бы говорит название что формы здесь не должно быть

Alexander
03.06.2017
13:32:07
то есть просто будут какие-то свои вьюшки, никак не связанные с базовыми из Django

что породит много новых строчек кода, а их хотелось избежать

хотелось что-нибудь типа манкипатчинга, раз-раз и готово, используются базовые вьюшки

Alexander
03.06.2017
13:35:48
ну, в общем, хотелось что - переопределить form_invalid и вызвать там DetailView, передав дополнительный контекст с формой

vadim
03.06.2017
13:36:11
вариант выше - породит слабую читабельность кода вопрос не в строках, а в приемственности - если конечно не хобби проект что касается перепределять - миксины как бы официально входят в доки, а DetailView - это вариант реализации не более

Google
Alexander
03.06.2017
13:36:42
конечная цель - решить задачу с минимальным написанием нового кода)

пофиг, насколько сложным будет код, главное чтобы его [своего кода] было мало) суть в этом)

конкретно для данного проекта

так reverse же просто ссылку генерирует?

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

Rookie
03.06.2017
13:40:16
А у тебя задача в этом и заключается. Принять ошибки, если form_invalid, записать их в словарь какой то, и отправить на другую вьюху, которая этот словарь примет.

Alexander
03.06.2017
13:40:47
ну тут редирект через браузер неизбежен, похоже

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

а если все формы отправлять на 1 урл - тогда не избежать большого сложного View, что тоже плохо

так что без редиректов, похоже, никак

я изначально хотел без редиректов, когда 1 вью передаёт данные в другую вью напрямую

vadim
03.06.2017
13:44:31
типа того def form_invalid(form) request.method = 'GET' return DetailView.as_view(form=form)(self.request, *self.args, **self.kwargs) в своем классе DetailView def __init__(self, form, **kwargs) super.... self.form = form

Alexander
03.06.2017
13:45:14
ну да, но тут получится, что та условная страница профиля будет отображаться по другому адресу уже

после сабмита формы

Rookie
03.06.2017
13:45:29
я изначально хотел без редиректов, когда 1 вью передаёт данные в другую вью напрямую
А как происходит смена вью то при этом? Вот, открыта в браузере страница. Вот, случилось какое то действие. Как у тебя произойдёт смена вью то?

vadim
03.06.2017
13:45:36
ну или get - делать в DetailView чтобы и post обрабатывал

Alexander
03.06.2017
13:46:12
А как происходит смена вью то при этом? Вот, открыта в браузере страница. Вот, случилось какое то действие. Как у тебя произойдёт смена вью то?
запрос уходит на UpdateView, которая в form_invalid передаёт управление в DetailsView и пользователю возвращается то, что рендерит DetailsView

vadim
03.06.2017
13:46:20
типа задекларировать def post(...) return self.get(...) тоды хакать реквест не надо

наверное

vadim
03.06.2017
13:47:00
короче вариантов как пыхтон в похапе превратить море )

Alexander
03.06.2017
13:47:55
Я не о том. Что при этом увидит пользователь??
ну, в моём примере есть страница профиля и на нём форма редактирования этого профиля, он должен вернуться на ту же страницу профиля и увидеть обновлённые данные или форму с ошибками

Страница 298 из 1273