
Mad
10.09.2017
21:39:37
Да тамособо нет страдания, ну или раньше не было...

Artem
10.09.2017
21:39:47
там всегда страдания

Mad
10.09.2017
21:39:47
Был просто JS и всё. И всякие библиотечки на нём.
И ты их на страничке подключал :)

Google

Mad
10.09.2017
21:40:00
А потом придумали nodejs и понеслось.

Sergey
10.09.2017
21:40:23
Ребят, есть идеи)?

Mad
10.09.2017
21:40:42
Что значит пустой POST?

Sergey
10.09.2017
21:40:48
неужели никто не испытывал боль с вью )?
а то и значит ) там нет объектов)

Artem
10.09.2017
21:41:25
и ты говоришь, что не надо страдать? О_о
Был просто JS и всё. И всякие библиотечки на нём.
неужели никто не испытывал боль с вью )?

Sergey
10.09.2017
21:42:38
С get все четко.. ), а вот с постом - ругается.. ежели я применю декоратор @csrf_exempt - то будет пустой request.POST

Artem
10.09.2017
21:42:56
забей на csrf

Sergey
10.09.2017
21:43:17

Artem
10.09.2017
21:45:03
забеееей тунца

Mad
10.09.2017
21:45:30

Google

Mad
10.09.2017
21:45:59
Если request.POST пустой, значит клиент посылает пустой request.POST либо у тебя ещё может быть ошибка в диагностировании содержимого request.POST

Sergey
10.09.2017
21:46:15

Artem
10.09.2017
21:46:20
я слал нормально пустой пост и все гуд
главное не слать что-то в пост при DELETE
не словишь ничего

Mad
10.09.2017
21:46:43
А, ну может он и должен быть пустой по задумке, я не знаю

Artem
10.09.2017
21:47:14
RFC говорит о том, что там разрешены только кверистирнги

Sergey
10.09.2017
21:48:14

Artem
10.09.2017
21:48:50

Sergey
10.09.2017
21:49:21

Artem
10.09.2017
21:50:34
ну вот ты смотри, какой тип запроса тебе подходит, шли там пережовывай и отсылай

Sergey
10.09.2017
21:51:16
ну я так и делаю), вроде как)... если пост - беру значения.. но там шиш)..

Mad
10.09.2017
21:51:41
Ну ты глянь для начала в браузере
Действительно ли ты пустой post посылаешь

Artem
10.09.2017
21:52:00
хватай так
self.request.body

Mad
10.09.2017
21:52:10
В developers tools найди свой XHR запрос и глянь его request часть

Artem
10.09.2017
21:52:54
в ПОСТ придет от формочки, а аяксовый запрос в body

Sergey
10.09.2017
21:55:10

Google

Mad
10.09.2017
21:55:55
Ну да, ты посылаешь данные в POST, но их не будет видно в request.POST

Sergey
10.09.2017
21:56:27

Mad
10.09.2017
21:56:35
Тебевыше ответили уже
request.body или типа того

Artem
10.09.2017
21:56:44

Mad
10.09.2017
21:56:55
Смотри в доках джанги, как получить доступ к raw данным post запроса

Artem
10.09.2017
21:57:18
и для вских реактов/ву и прочей херни, используй Restfull

Sergey
10.09.2017
21:57:55
вт так быть
То есть.. мне нуно другой объект смотреть по сути .. ?

Mad
10.09.2017
21:58:05
в request.POST будут данные, если ты шлёшь запрос у которого content-type = application/x-www-form-urlencoed или multipart/form-data
Тебе нудо смотреть туда, где лежат данные POST запроса.

Sergey
10.09.2017
21:58:51
так а может надо добавить контент тайп ? ) в ву ?

Mad
10.09.2017
21:59:00
нет
Тогда тебе придётся и данные в соответсутющем виде слать

Artem
10.09.2017
21:59:12
кинь метод как данные принимаешь

Mad
10.09.2017
21:59:35
например если application/x-www-form-urlencoded, то данные пост запроса это строка вида:
foo=bar&baz=gaz&age=3

Sergey
10.09.2017
21:59:41
он же в пост бине.. сек ..
def push(request):
if request.method == "POST":
print(request.POST)

Mad
10.09.2017
22:00:05
Ну не будет там данных, бро

Sergey
10.09.2017
22:01:00
Ребят.. я запутался).. мне нужно брать request.body ?

Artem
10.09.2017
22:01:19
ДААААААА

Google

Mad
10.09.2017
22:01:25
Ты что-то делаешь неправильно.
За это время можно было 10 раз уже проверить, есть ли данные в request.body :)

Sergey
10.09.2017
22:02:05
не выходит).. консоль ругается)
Forbidden (CSRF token missing or incorrect.): /push/
[10/Sep/2017 22:01:14] "POST /push/ HTTP/1.1" 403 2502

Mad
10.09.2017
22:02:22
Не может такого быть

Artem
10.09.2017
22:02:28
забей на сыка
csrf

Mad
10.09.2017
22:02:35
Потому что ты раньше грил, что утебя доходил дело до выполнения строчки print(request.POST)

Sergey
10.09.2017
22:03:29
да), когда я ставил @csrf_exempt
а сейчас просто 500 валится ) но тут естьк кое что
b'{"params":{"url_input":"\xd0\xb2\xd1\x84\xd1\x8b\xd0\xb2\xd1\x84\xd1\x8b\xd0\xb2\xd1\x84\xd1\x8b"},"headers":{"HTTP_X_CSRFTOKEN":"uC2L2xDWtHQSqpsnPnpROjgDI2Kf5Z9bZEEWfHb0xy6sQlYfbthvnD6kBi3mtUpy"}}'
данные в сыром виде.. как я полагаю)

Artem
10.09.2017
22:08:27
да
front_data = json.loads(self.request.body)
и работаешь со словарем

Sergey
10.09.2017
22:11:50
джейсон может распарсить только стринг.. а я получаю байт...(

Mad
10.09.2017
22:12:22
ты вообще в курсе, что google существует?
Вбиваешь туда любую ошибку, открываешь ссылки и читаешь решения.

Sergey
10.09.2017
22:12:51
окей окей.. спасибо за наводку

Mad
10.09.2017
22:13:17
Ну и надо что ли основы почитать, что такое str и bytes :)

Google

Sergey
10.09.2017
22:14:05
да, согласен)..

X
10.09.2017
22:17:39
А байт в стринг перевести не?

Sergey
10.09.2017
22:22:53
Парни, всем спасибо за помощь! )

Aleksandr
11.09.2017
00:00:08
Привет! Застопорился на одном запросе к бд. Модель такая:
Set: id, filename
Pair: set_id, id, a, b, result
ExceprionLog: pair_id, exception
Нужно вывести a, b, exception только для тех пар,
у которых есть исключение. Имя файла - аргумент.
Пока что нахардкодил такое:
Pair.objects.filter(set_id=Set.objects.filter(filename='second').values('id'), id__in=ExceptionLog.objects.values('pair_id'))
Может есть у кого идеи?

Mad
11.09.2017
00:05:47
я хз что оно делает, но почему set_id=..values() а потом id__in=...values()
И там и там одинаково должно быть, а утебя сначала __exact, а потом __in

Aleksandr
11.09.2017
00:09:47
Хм, с файлом я явно усложняю
Вот так пусть будет
Pair.objects.filter(set_id=id, id__in=ExceptionLog.objects.values('pair_id'))
Запрос выводит список пар из конкретного множества которые вызвали исключения
Мне нужно, чтобы ещё и имя исключения добавилось к каждой выведенной паре

Mad
11.09.2017
00:11:26
Ну это какой-то фиговый запрос, если у тебя будет мильон ExceptionLog объектов, то получится большой список, который ты передаёшь аргументу id__in

Aleksandr
11.09.2017
00:11:55
Не спорю, с БД у меня опыт примерно никакой

Mad
11.09.2017
00:12:04
Напиши для начала RAW SQL запрос, а потом придумай, как это на django orm перевести
ИЛи не переводи и так и юзай raw sql -)
В запросе у тебя должнен присутствовать JOIN

Aleksandr
11.09.2017
00:13:12
Окей, попробую
Спасибо

Mad
11.09.2017
00:15:40
тебе нужен INNER JOIN

Aleksandr
11.09.2017
00:40:46
Лучше?
SELECT a, b FROM pair
INNER JOIN exceptionlog ON pair.id = exceptionlog.id
WHERE pair.set_id = 1;
# единица просто для проверки

Mad
11.09.2017
00:46:12
Наверное. Лучше или нет тебе только EXPLAIN скажет ну или замеры времени выполнения запроса, если данных достаточно много, чтобы видеть разницу.
В джанго есть плагин, чтобысмотреть SQL запросы, правда я не помню, работает ли он для RAW SQL

Dmitriy
11.09.2017
00:47:32
На данных до где-то 10 миллионов парится нет смысла с производительностью. у БД оптимизированные джоины по инкрементам.

Mad
11.09.2017
00:48:29
https://django-debug-toolbar.readthedocs.io/en/stable/panels.html#sql