Мне cookies вообще не приходит в Postman Однако работает если в хедерах постмана дать 3 вещи key:value следующим образом: Cookie: sessionid=91cjecs319qpoqzy9dbhxni83tdqqyh1 X-CSRFToken: bY1H6xcLhNyAKmdzwndMfFxVun7ozJXb Cookie: csrftoken=bY1H6xcLhNyAKmdzwndMfFxVun7ozJXb
@@RomanBog Отображаются. Надо первым делом сделать гет запрос 127.0.0.1:8000/admin/ тогда приходят все нужные ключи их вводишь уже 127.0.0.1:8000/book/ в этом чате ниже есть разбор и решение. что нужно через админа зайти в постмэне, чтобы получить ключ
Спасибо большое за уроки! У кого проблема с CSRF Failed: CSRF cookie not set. Добавляйте в хедер, помимо того, что добавил автор, еще одну куку Cookie: csrftoken=%Ваш токен%. Итого у вас получится следующая структура: 1) X-CSRFToken: %Токен% 2) Cookie: sessionid=%ID% 3) Cookie: csrftoken=%Токен%
Большое спасибо за прекрасно изложенный материал. Ваша серия видео по Джанго, по моему мнению - лучшая в русскоязычном сегменте. Я, и уверен, что многие, кто просмотрел Ваши видео, будем рады увидеть новые видео.
Просто нет слов, от восхищения. Ну настолько всё последовательно и понятно. Удивительно как же это всё просто по сравнению со встроенным в джанго механизмом через создание view функций или классов.
Это великолепно! Настолько качественное объяснение что я даже смог сам сделать test_delete ))) Присоединяюсь к остальным студентам: такой труд стоит благодарности, прикрутите поддержку канала, пожалуйста)
Спасибо за науку. Для тех, кто мучается с новым Постменом (как я): обновленный постмен отдельно создает куки вверху списка с совершенно другим значением CSRF - его и надо вставить в X-CSRF...
Можно еще на вкладке Authorization ввести логин и пароль от админки. И будет все работать без куков. Но с целью получения опыта в работе с куки это нужное дело! Это касается только авторизации, CSRF все равно придется прописывать. Мне помог коммент ниже разобраться с ошибкой CSRF Failed: CSRF cookie not set.
Странно, никак не могу воспроизвести. Даже если вообще не передаю данных никаких headers или запрос на 403 или 500 , у меня всегда этот Cookie приходит с csrftoken...
Всё -таки подход с TDD помогает подготовиться ко всякого рода неожиданностям. Стоило мне в attr model добавить ImageField как проснулась настройка parser_classes с необходимостью encode_multipart и проч. прелестями того, что в джанго templates за тебя делает сама джанга, и которые воспринимаются как само собой разумеющ-ся. осталось только осилить необходимое setattr(request.data, '_mutable', True) в методе create() и можно успокоиться.
@@SeniorPomidorDeveloper Я вам очень,Алексей благодарна, что вы смогли эту тему так преподнести. раньше меня при слове тестирование одолевала только тоска.
Рад стараться. Тема правда очень важная и про неё очень мало говорят на курсах . У нас в проекте , на моей основной работе , сейчас более 5000 тестов и когда мы изменяем код постоянно что-то где-то сломается . Стабильный код это наверно самое главное для бизнеса , точно важнее чем скорость , так что изучайте тесты глубже, обязательно пригодится .
Подскажите пожалуйста в postman, сервер не отправляет cookies CSRF token, который вы копируете. Я скопировал csrftoken с браузера и вставил в postmen но это не сработала.
Т.е сервер отправляет csrf токен как куки, если изначально его не было? Можно же тогда с вредоносного сайта отправить еще раз запрос, уже с этим токеном, не очень понял момент этот)
Добрый день, у меня есть таблица на js которую можно менять на лету, и отправлять данные на сервер. Кнопка сохранить формирует список объектов, как правильно мне их отправить на сервер?
А кто-то делал unittests c auth на jwt? если с вариантом Алексея на основе сессий проходит краткий вариант client.force_login(user), то с jwt такий номер похоже не прокатывает. пока пробую пройти полный путь auth in setUp, но пока с умененным успехом.
@@SeniorPomidorDeveloper Thx.Получилось бе3 особых выдумок с помощью .client.force_authenticate(user). иногда документацию нужно читать раньше,чем бросаться в stackoverflow
Почему-то не запускаются тесты по команде "python manage.py test". Тесты работают только если ткнуть "manage.py test" носом в конкретный тест ("python manage.py test store.tests.test_serializers") или в конкретную директорию с тестами ("python manage.py test store\tests"). Сколько не бился (--pattern, __init__.py ...), но добиться запуска тестов с рекурсивным проходом по всем директориям - не смог. Среда разработки: Win10, VSCode, Python 3.10, Django 3.2
@@SeniorPomidorDeveloper спасибо за ответ! Ошибок нет. Просто "System check identified no issues (0 silenced). Ran 0 tests in 0.000s OK" Погуглил. Создал файл __init__.py в директории tests. Не помогло. Пока отложил решение этой проблемы. Со временем перейду на linux и надеюсь там будет все ок. Просто грешу на windows 10. Она, на мой взгляд, неудобна и неподходящая для ВЭБ разработки (Ну кроме .net)
Помоги, пожалуйста. у меня есть JSON, получаю его с другого сайта, там он постоянно обновляется. хочу сделать автоматизацию загрузки данных в БД. Это можно через rest_framework сделать или я ни там копаю? Я сделал через fixtures, но это ни то что мне нужно(((
Rest это не совсем для этого . Получаем файл через http запрос через requests , парсим его , полученные данные сохраняем в базу . В двух словах так . Нужно гуглить про парсинг данных , сохранять в базу нужно через создание объектов через ORM
@@SeniorPomidorDeveloper @Senior Pomidor Developer парсинг через requests библиотеку делаю, получаю json, мне это и нужно, короче с парсингом проблем нету. Проблема с сохранением в бд.(( Спасибо в любом случае, я понял, пойду дальше читать. Отпишусь потом
@@SeniorPomidorDeveloper Спасибо, что навел на правильный путь, все получилось. Однако остался маленький вопрос. Слушай может у тебя telegram, skype есть или еще что-то подобное, а то тут не очень удобно писать, доставать не буду, спрошу и отстану))
@@SeniorPomidorDeveloper да, но даже скрин не отправишь. Ладно проехали. Делаю сохранение в бд в файле models.py, то есть пишу весь код на сохранение всех объектов в этом файле и выходит, что помимо моделей у меня там еще и этот код. Так нормально делать вообще? Я пытался создать другой файл, в котором разместил код на сохранение объектов, но он не отрабатывает, ошибок нет. Собственно, когда код в models.py, то все ок, а когда в другом файле, то не работает сохранение. Вообще-то еще раз спасибо за помощь!)
У меня не признаётся равенство: self.assertEquals(15.99, self.book1.price) AssertionError: 15.99 != Decimal('15.99') Вероятно в 15.99 подозревается float... пришлось импортировать Decimal from decimal, а ещё и превращать с строку, чтобы 2 знака после , выдерживалось self.assertEqual(Decimal('15.99'), self.book1.price). В случае self.assertEquals(15, self.book1.price) сравнение int and Decimal = OK.
Все верно. Видимо unit test умеет сравнивать int и decimal , но не умеет сравнивать decimal с float , так -как в нем не стабильное количество знаков после запятой .
Не могу понять в чем беда. Тест на создание и апдейт валится тут: response = self.client.post(url, data=json_data, conent_type='application/json') с формулировкой AttributeError: 'str' object has no attribute 'items' Код уже повторил весь символ в символ Обычный requests нормально отрабатывает с теми же входными переменными. Куда копать? python 3.10
@@SeniorPomidorDeveloper только начинаю понимать немного джангу. я так понял что в джанге все крутится вокруг моделей и их всевозможных представлений пользователю. я правильно понял?
Ну я бы сказал что все крутится вокруг базы, по тому что любой бизнес в интернете это работа с данными. Ты им даёшь свои данные , они на их основе создают другие данные , ты им за это платишь денежку )
У кого как и у меня нет в постмане JSON формата передачи данных, не знаю куда его занесло в последней версии:)) закоментируйте 'DEFAULT_PARSER_CLASSES': ['rest_framework.parsers.JSONParser', ] И используем from-data закладку postman при post запросе...
Подскажи, как добавил куки и айди сесси в инсомнию? Справа в мэнэдж куки я вписал 127001 + кей + айди но в главное окно не перекочевали данные и я не могу авторизоваться
тест delete написал с чеком количества записей в бд, вроде проходит, но что-то будто не так def test_delete(self): self.assertEqual(3, Book.objects.all().count()) url = reverse('book-detail', args=(self.book1.id,)) data ={ "name": self.book1.name, "price": 575, "author_name": self.book1.author_name } json_data = json.dumps(data) self.client.force_login(self.user) response = self.client.delete(url, data=json_data, content_type='application/json') self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code) self.assertEqual(2, Book.objects.all().count())
@@SeniorPomidorDeveloper вроде все так😁 смутило в data 'price', таки не понял, почему изменение 'price' никак не влияет на тест, или каждый тест идёт независимо от предыдущих?
Мне cookies вообще не приходит в Postman
Однако работает если в хедерах постмана дать 3 вещи key:value следующим образом:
Cookie: sessionid=91cjecs319qpoqzy9dbhxni83tdqqyh1
X-CSRFToken: bY1H6xcLhNyAKmdzwndMfFxVun7ozJXb
Cookie: csrftoken=bY1H6xcLhNyAKmdzwndMfFxVun7ozJXb
Спасибо, помогло.
Аналогино, в Postman v10.10.9 не отображаются Cookie, но их легко посмотреть в браузере.
@@RomanBog Отображаются. Надо первым делом сделать гет запрос 127.0.0.1:8000/admin/
тогда приходят все нужные ключи их вводишь уже
127.0.0.1:8000/book/
в этом чате ниже есть разбор и решение. что нужно через админа зайти в постмэне, чтобы получить ключ
@@RomanBog Ещё обрати внимание по переходам в меню сеньора поминадора. Я тоже просидел 15 минут в освоении ключей, потому что был не в тех вкладках.
Спасибо
спасибо! помогло, только как это работает?
Спасибо большое за уроки!
У кого проблема с CSRF Failed: CSRF cookie not set. Добавляйте в хедер, помимо того, что добавил автор, еще одну куку Cookie: csrftoken=%Ваш токен%. Итого у вас получится следующая структура:
1) X-CSRFToken: %Токен%
2) Cookie: sessionid=%ID%
3) Cookie: csrftoken=%Токен%
от души. два дня бился
у меня так не сработало, а вот по комменту ниже Да, сначала ввести 127.0.0.1:8000/admin/store/book/, причем без http
@@jimlabable Спасибо, сработало!
Спасибо!:)
@@jimlabable Спасибо, помогло
Большое спасибо за прекрасно изложенный материал. Ваша серия видео по Джанго, по моему мнению - лучшая в русскоязычном сегменте.
Я, и уверен, что многие, кто просмотрел Ваши видео, будем рады увидеть новые видео.
Сделаем ещё
Спасибо большое за контент. Особенно порадовала инфа про sessionid и csrf token. И за тесты респект.
Красавчик. Слежу за твоим сериалом, и меня радует такой мега полезный контент. Все очень доступно и понятно, в общем спасибо тебе за труд!!!!
Супер! Рад что нравится!
Большое спасибо за Ваши уроки! Очень полезные вещи про postman, получение данных из браузера и тесты
Рад что понравилось!
Большое спасибо, уроки просто супер. Также оставляйте в описании ссылку на поддержку канала. Такой труд должен быть оплачен)
Просто нет слов, от восхищения. Ну настолько всё последовательно и понятно. Удивительно как же это всё просто по сравнению со встроенным в джанго механизмом через создание view функций или классов.
А написано «недовольный» )
@@SeniorPomidorDeveloper 🤣🤣🤣🤣🤣🤣🤣
Это великолепно! Настолько качественное объяснение что я даже смог сам сделать test_delete )))
Присоединяюсь к остальным студентам: такой труд стоит благодарности, прикрутите поддержку канала, пожалуйста)
Урок наконец то пройден, спасибо большое, очень жду новые уроки по этой теме.
Отлично! Будут скоро новые.
Спасибо за науку. Для тех, кто мучается с новым Постменом (как я): обновленный постмен отдельно создает куки вверху списка с совершенно другим значением CSRF - его и надо вставить в X-CSRF...
Спасибо большое!!! Очень понятные и информативные уроки
Супер, что ты уделяешь такое большое внимание тестам, TDD рулит!
Очень хорошо. За тесты два лайка
Алексей, было бы круто если бы Вы сделали курс по Джанго дебагеру) Спасибо Вам за Вашу работу!
Да, полезная штука, может сделаю видео
Можно еще на вкладке Authorization ввести логин и пароль от админки. И будет все работать без куков. Но с целью получения опыта в работе с куки это нужное дело! Это касается только авторизации, CSRF все равно придется прописывать. Мне помог коммент ниже разобраться с ошибкой CSRF Failed: CSRF cookie not set.
Как же топово. Спасибо!
Спасибо я решил вопрос))) Спасибо за уроки!
спасибо!👏
Спасибо!
Лучший!
А что делать, если как на 10:58 нет куков?
Проверить что есть правильный sessionid, можно попробовать взять этот csrftoken из другого запроса . Можно хоть из браузера попробовать взять
@@SeniorPomidorDeveloper та же проблема - не приходит в постман ничего, из хрома не принимается, джанга 3.1
Гляну в чем может быть дело..
Странно, никак не могу воспроизвести. Даже если вообще не передаю данных никаких headers или запрос на 403 или 500 , у меня всегда этот Cookie приходит с csrftoken...
@@SeniorPomidorDeveloper окей спасибо, будем смотреть что не так, мне что то кажется разные настройки по дефолту в джанге разных версий
Топ, спасибо большое
Пишу комментарий чтобы по быстрей вышли новые ролики))
Всё -таки подход с TDD помогает подготовиться ко всякого рода неожиданностям. Стоило мне в attr model добавить ImageField как проснулась настройка parser_classes с необходимостью encode_multipart и проч. прелестями того, что в джанго templates за тебя делает сама джанга, и которые воспринимаются как само собой разумеющ-ся.
осталось только осилить необходимое setattr(request.data, '_mutable', True) в методе create() и можно успокоиться.
TDD сила , а без тестов вообще никуда
@@SeniorPomidorDeveloper Я вам очень,Алексей благодарна, что вы смогли эту тему так преподнести. раньше меня при слове тестирование одолевала только тоска.
Рад стараться. Тема правда очень важная и про неё очень мало говорят на курсах . У нас в проекте , на моей основной работе , сейчас более 5000 тестов и когда мы изменяем код постоянно что-то где-то сломается . Стабильный код это наверно самое главное для бизнеса , точно важнее чем скорость , так что изучайте тесты глубже, обязательно пригодится .
Вы себе представить не можете, как вы мне помогли этим курсом. Спасибо огромное!!! А есть куда вам денек закинуть в качестве обмена?
Все ок , денег не надо ! Вам спасибо что посмотрели !
Подскажите пожалуйста в postman, сервер не отправляет cookies CSRF token, который вы копируете. Я скопировал csrftoken с браузера и вставил в postmen но это не сработала.
Обсуждали эту тему в комментариях ниже, поищите , пожалуйста , там есть решение .
@@SeniorPomidorDeveloper Ненашел(
Т.е сервер отправляет csrf токен как куки, если изначально его не было? Можно же тогда с вредоносного сайта отправить еще раз запрос, уже с этим токеном, не очень понял момент этот)
Куки связаны с этим доменом. У вредоносного сайта будет свои куки , он не будет видеть токен , которые выдал наш сайт .
@@SeniorPomidorDeveloper понял, спасибо:)
Добрый день, у меня есть таблица на js которую можно менять на лету, и отправлять данные на сервер.
Кнопка сохранить формирует список объектов, как правильно мне их отправить на сервер?
Добрый день! Напишите в телеграмм канал , и подробнее, может там кто-то подскажет . Ссылка в шапке профиля
А кто-то делал unittests c auth на jwt? если с вариантом Алексея на основе сессий проходит краткий вариант client.force_login(user), то с jwt такий номер похоже не прокатывает. пока пробую пройти полный путь auth in setUp, но пока с умененным успехом.
Да, может там как-то по-другому нужно логинить юзера
@@SeniorPomidorDeveloper Thx.Получилось бе3 особых выдумок с помощью .client.force_authenticate(user). иногда документацию нужно читать раньше,чем бросаться в stackoverflow
😀
Почему-то не запускаются тесты по команде "python manage.py test". Тесты работают только если ткнуть "manage.py test" носом в конкретный тест ("python manage.py test store.tests.test_serializers") или в конкретную директорию с тестами ("python manage.py test store\tests").
Сколько не бился (--pattern, __init__.py ...), но добиться запуска тестов с рекурсивным проходом по всем директориям - не смог.
Среда разработки: Win10, VSCode, Python 3.10, Django 3.2
А что пишут когда не запускаются ?
@@SeniorPomidorDeveloper спасибо за ответ! Ошибок нет. Просто
"System check identified no issues (0 silenced).
Ran 0 tests in 0.000s
OK"
Погуглил. Создал файл __init__.py в директории tests. Не помогло. Пока отложил решение этой проблемы. Со временем перейду на linux и надеюсь там будет все ок. Просто грешу на windows 10. Она, на мой взгляд, неудобна и неподходящая для ВЭБ разработки (Ну кроме .net)
@@romanm.4763 С windows10 все нормально, попробуй PyCharm
А для чего мы дампим дату в тестах на пост методе?
Эээ. Честно говоря, уже не помню )
чтобы сериализовать наш написанный питон словарь в json
Это было самое ленивое что я видел, скопировать Cookie и вставить)))) вроде быстрее было написать
🤣 ну да, согласен) копипаст надежнее просто. Привычка осталась.
Помоги, пожалуйста.
у меня есть JSON, получаю его с другого сайта, там он постоянно обновляется.
хочу сделать автоматизацию загрузки данных в БД.
Это можно через rest_framework сделать или я ни там копаю?
Я сделал через fixtures, но это ни то что мне нужно(((
Rest это не совсем для этого . Получаем файл через http запрос через requests , парсим его , полученные данные сохраняем в базу . В двух словах так . Нужно гуглить про парсинг данных , сохранять в базу нужно через создание объектов через ORM
@@SeniorPomidorDeveloper @Senior Pomidor Developer парсинг через requests библиотеку делаю, получаю json, мне это и нужно, короче с парсингом проблем нету.
Проблема с сохранением в бд.((
Спасибо в любом случае, я понял, пойду дальше читать.
Отпишусь потом
@@SeniorPomidorDeveloper Спасибо, что навел на правильный путь, все получилось.
Однако остался маленький вопрос.
Слушай может у тебя telegram, skype есть или еще что-то подобное, а то тут не очень удобно писать, доставать не буду, спрошу и отстану))
Может лучше тут спросить? Вдруг кому-то ещё эта информация пригодится.
@@SeniorPomidorDeveloper да, но даже скрин не отправишь.
Ладно проехали.
Делаю сохранение в бд в файле models.py, то есть пишу весь код на сохранение всех объектов в этом файле и выходит, что помимо моделей у меня там еще и этот код.
Так нормально делать вообще?
Я пытался создать другой файл, в котором разместил код на сохранение объектов, но он не отрабатывает, ошибок нет.
Собственно, когда код в models.py, то все ок, а когда в другом файле, то не работает сохранение.
Вообще-то еще раз спасибо за помощь!)
У меня не признаётся равенство:
self.assertEquals(15.99, self.book1.price)
AssertionError: 15.99 != Decimal('15.99')
Вероятно в 15.99 подозревается float...
пришлось импортировать Decimal from decimal, а ещё и превращать с строку, чтобы 2 знака после , выдерживалось
self.assertEqual(Decimal('15.99'), self.book1.price).
В случае self.assertEquals(15, self.book1.price)
сравнение int and Decimal = OK.
Все верно. Видимо unit test умеет сравнивать int и decimal , но не умеет сравнивать decimal с float , так -как в нем не стабильное количество знаков после запятой .
Не могу понять в чем беда. Тест на создание и апдейт валится тут: response = self.client.post(url, data=json_data, conent_type='application/json') с формулировкой AttributeError: 'str' object has no attribute 'items'
Код уже повторил весь символ в символ
Обычный requests нормально отрабатывает с теми же входными переменными.
Куда копать? python 3.10
Попробуйте сравнить с кодом github.com/chepe4pi/books_lessons/tree/day_5/books
Не создавайте отдельную переменную - json_data. response = self.client.post(url, json.dumps(data), content_type="application/json"_
В чем различие modelviewset и Generic views
ModelViewSet нужен для работы с моделью через CRUD, методами GET, POST, PUT, DELETE
а GenericViewSet не имеет никаких методов связанных с запросами.
Не знаю проверял ли кто нибудь или нет, но попробуйте поработать в браузере мозила, там очень удобное отображение json.
Если в хром добавить плагин JSON Formatter, то будет еще удобнее: можно менять вид, цвет, распарсить и тд, удобно однако
В новом курсе так и сделал
Работает без refresh_from_db
наверное за год починил)
не понятно как работает reverse(book-list)
создает из viewset по базовому имени урла ссылку для получения списка объектов
@@SeniorPomidorDeveloper только начинаю понимать немного джангу. я так понял что в джанге все крутится вокруг моделей и их всевозможных представлений пользователю. я правильно понял?
Ну я бы сказал что все крутится вокруг базы, по тому что любой бизнес в интернете это работа с данными. Ты им даёшь свои данные , они на их основе создают другие данные , ты им за это платишь денежку )
У кого как и у меня нет в постмане JSON формата передачи данных, не знаю куда его занесло в последней версии:))
закоментируйте 'DEFAULT_PARSER_CLASSES': ['rest_framework.parsers.JSONParser', ]
И используем from-data закладку postman при post запросе...
😯
@@SeniorPomidorDeveloper Блин, сам дурак... TEXT -> JSON поменять забыл... сижу такой и думаю чего сани не едут:))
😁
@@SeniorPomidorDeveloper Пора создавать чат в дискорде:)) или выкладывать курс на площадку с монетизацией
Есть группа в телеграмме, ссылка в шапке профиля
AssertionError: 201 != 400 - Вот такая ошибка, когда создаю выходит
Надо посмотреть что в response.data
есть еще insomnia - альтернатива postman, можно скачать без регистрации и прочей мешуры.
Подскажи, как добавил куки и айди сесси в инсомнию? Справа в мэнэдж куки я вписал 127001 + кей + айди но в главное окно не перекочевали данные и я не могу авторизоваться
тест delete написал с чеком количества записей в бд, вроде проходит, но что-то будто не так
def test_delete(self):
self.assertEqual(3, Book.objects.all().count())
url = reverse('book-detail', args=(self.book1.id,))
data ={
"name": self.book1.name,
"price": 575,
"author_name": self.book1.author_name
}
json_data = json.dumps(data)
self.client.force_login(self.user)
response = self.client.delete(url, data=json_data,
content_type='application/json')
self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code)
self.assertEqual(2, Book.objects.all().count())
А что не так?
@@SeniorPomidorDeveloper вроде все так😁 смутило в data 'price', таки не понял, почему изменение 'price' никак не влияет на тест, или каждый тест идёт независимо от предыдущих?
Да, каждый тест независимо и на новой чистой базе запускается