Ответы пользователя по тегу Django Rest Framework
  • Как обработать произвольный запрос к Django Rest Framework?

    Achill
    @Achill Автор вопроса
    Недопрограммист)))
    Может кому понадобится. Проблема была в csrf токене. Решил проблему но как по мне это костыль.
    1 в файле урлов Api/urlls.py подключил csrf_exempt:
    from django.urls import path, include
    from django.views.decorators.csrf import csrf_exempt
    
    from Sites.views import SiteListView
    from .views import messagePost
    
    app_name= 'Sites'
    urlpatterns = [
        path('Site/all/', SiteListView.as_view()),
        path('sendMessage/', csrf_exempt(messagePost)),
    ]

    В файле Api/views.py для обработки запроса сделал обычную функцию котораю получает данные из request.body в формате json и после обработки также возвращает json:
    from django.shortcuts import render
    import json
    import requests
    
    from django.http import JsonResponse
    from rest_framework.response import Response
    
    def messagePost(request):
        data = json.loads(request.body.decode())
        responce=dict(error=0, message="Message send", success=True)
    
        token = "TELEGRAM_TOKEN"
        url = "https://api.telegram.org/bot"
        channel_id = "CHAT_ID"
        url += token
        method = url + "/sendMessage"
        text="Имя: \n "+str(data.get('name'))+"\n Email: \n "+str(data.get('email'))+"\n Телефон:\n "+str(data.get('phone'))+"\n Сообщение:\n "+str(data.get('message'))
    
        r = requests.post(method, data={
             "chat_id": channel_id,
             "text": text
              })
    
        if r.status_code != 200:
            responce['error'] = 5
            responce['message']="Возникла ошибка"
    
        return JsonResponse(responce)
    Ответ написан
    Комментировать