Size: a a a

Яндекс.Диалоги (сообщество разработчиков)

2020 January 24

A

Arkady in Яндекс.Диалоги (сообщество разработчиков)
Дааааааа
источник

OK

Oleg K in Яндекс.Диалоги (сообщество разработчиков)
Скажите, а можно как-то с командой алисы связаться.. все же не могу со своей бедой справиться. Или может просто чат хороший по питону, с кем поговорить можно. Дело в том, что на post запрос от Алисы (как и на любой другой запрос с других онлайн-сервисов)

В документации джанго нашел вот что:
В любом шаблоне, использующем форму записи, используйте csrf_tokenтег внутри <form>элемент, если форма предназначена для внутреннего URL, например:
< form method = "post"> > {%  csrf_token %}
Это не следует делать для форм POST, предназначенных для внешних URL-адресов, так как это приведет к утечке маркера CSRF, что приведет к уязвимости.
————
Говорят только «не делайте», а что делать не понятно.  Как на джанге алису то сделать?) Хэлп!)
источник

DD

David Dale in Яндекс.Диалоги (сообщество разработчиков)
Oleg K
Скажите, а можно как-то с командой алисы связаться.. все же не могу со своей бедой справиться. Или может просто чат хороший по питону, с кем поговорить можно. Дело в том, что на post запрос от Алисы (как и на любой другой запрос с других онлайн-сервисов)

В документации джанго нашел вот что:
В любом шаблоне, использующем форму записи, используйте csrf_tokenтег внутри <form>элемент, если форма предназначена для внутреннего URL, например:
< form method = "post"> > {%  csrf_token %}
Это не следует делать для форм POST, предназначенных для внешних URL-адресов, так как это приведет к утечке маркера CSRF, что приведет к уязвимости.
————
Говорят только «не делайте», а что делать не понятно.  Как на джанге алису то сделать?) Хэлп!)
А зачем у тебя вообще ФОРМА там?
источник

OK

Oleg K in Яндекс.Диалоги (сообщество разработчиков)
Не, у меня формы нет. Я создал чат в панели яндекса и через вкладку «Тестирование» пытаюсь ответ от сервера получить. В ответ вот эта страница..
источник

OK

Oleg K in Яндекс.Диалоги (сообщество разработчиков)
источник

DD

David Dale in Яндекс.Диалоги (сообщество разработчиков)
Oleg K
Не, у меня формы нет. Я создал чат в панели яндекса и через вкладку «Тестирование» пытаюсь ответ от сервера получить. В ответ вот эта страница..
Я имею в виду, зачем сервер себя ведёт так, как будто там форма ожидается? Он пишет You are seeing this message because this site requires a CSRF cookie when submitting forms.

Я полагаю, раз ты используешь джанго, у тебя на сервере должно быть что-то примерно такое (нагуглено по запросу "django http api"). Это так? Оно же безо всяких форм делается.
источник

OK

Oleg K in Яндекс.Диалоги (сообщество разработчиков)
Не открывается ссылка почему-то.
Почему сервер так себя ведет 🤷🏾‍♂️
По вебхуку просто начинает работать этот код:
источник

OK

Oleg K in Яндекс.Диалоги (сообщество разработчиков)
источник

OK

Oleg K in Яндекс.Диалоги (сообщество разработчиков)
Как в стандартной файле про купи слона от яндекса. Если POST, то пошло-поехало.. почему оно формой считает?.. не знаю.. может джанго пост запросы формой называет?
источник

DD

David Dale in Яндекс.Диалоги (сообщество разработчиков)
Oleg K
Как в стандартной файле про купи слона от яндекса. Если POST, то пошло-поехало.. почему оно формой считает?.. не знаю.. может джанго пост запросы формой называет?
Нет, не должен.
Я подозреваю, ты почему-то в функцию alice вообще не попадаешь
источник

OK

Oleg K in Яндекс.Диалоги (сообщество разработчиков)
Не, она мне и не нужна. Я сначала свой код просто добавил файлом и хотел туда обращаться, но по факту сейчас пока только здесь во views обрабатываю все. Туда даже не лезу) Импортировать импортировал, а не пользую. Ладно, пошел еще смотреть..
источник

LB

Leonid Bogolubov in Яндекс.Диалоги (сообщество разработчиков)
Вебхук должен отдавать JSON, а у вас отдает HTML - что-то не то вы импортировали
источник

DD

David Dale in Яндекс.Диалоги (сообщество разработчиков)
Oleg K
Не, она мне и не нужна. Я сначала свой код просто добавил файлом и хотел туда обращаться, но по факту сейчас пока только здесь во views обрабатываю все. Туда даже не лезу) Импортировать импортировал, а не пользую. Ладно, пошел еще смотреть..
Я вот про что. У тебя импортированный модуль называется alice, и функция называется alice тоже.
Насколько я понимаю, джанго как-то автоматически привязывает к урлу название функции, которым он должен обрабатываться (но это не точно, я сам на фласке пишу).
А тут два одноименных объекта, и джанго запутался.
источник

OK

Oleg K in Яндекс.Диалоги (сообщество разработчиков)
Leonid Bogolubov
Вебхук должен отдавать JSON, а у вас отдает HTML - что-то не то вы импортировали
Ну если он работает, то да.. а у меня на входе django не пускает даже и отдает вот html..
источник

DD

David Dale in Яндекс.Диалоги (сообщество разработчиков)
Мораль: если пишете на питоне, используйте IDE, которая такое дерьмо умеет детектить.
источник

OK

Oleg K in Яндекс.Диалоги (сообщество разработчиков)
Нашел статью вот про то как вк бот писался на джанго. Там декоратор использовался что бы отключить CSRF защиту..

https://m.habr.com/ru/post/429628/
источник

OK

Oleg K in Яндекс.Диалоги (сообщество разработчиков)
David Dale
Мораль: если пишете на питоне, используйте IDE, которая такое дерьмо умеет детектить.
Я пишу ваще на телефоне)) с Codeanywhere))
источник

OK

Oleg K in Яндекс.Диалоги (сообщество разработчиков)
Пока в метро катаюсь)
источник

OK

Oleg K in Яндекс.Диалоги (сообщество разработчиков)
Кароче. Вдруг кому пригодится)
Насколько я понял эта CSRF защищает по того, что бы к вам на сайт приходили пост запросы откуда-то еще помимо вашего сайта (есть форма на сайте и в запросе этой формы надо добавить ключ, а из вне никто не может этот пост запрос прислать вам). Так вот его надо отключить просто. По ссылке выше человек отключил защиту CSRF, но заменил ее своим ключом от вк, т.е. он post от вк теперь только принимает.
Джанго дает возможность отключить эту проверку. Надо просто подгрузить декоратор из библиотеки и все. Это можно сделать для определенной views.py, а не для всего сайта, например.
Делается так:

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def my_view(request):
   return HttpResponse('Hello world')

Вдруг пригодиться кому)
источник

МЗ

Михаил Захаров... in Яндекс.Диалоги (сообщество разработчиков)
На фиг питон — смотрите как код красив в ноде на Яндекс-функциях (публикуется на правах рекламы)
https://habr.com/ru/post/440374/
источник