Передача данных только при POST-запросе с помощью dJango SSE Server Side Events

Я пытаюсь транслировать SSE всем клиентам, как только пользователь делает запрос.

Мне удалось запустить этот базовый пример

async def dashboard_oc_interface(request):
    """
    Sends server-sent events to the client.
    """
    async def event_stream():
          
        i = 0   
        while True: 
            # yield {'id' : random.randint(0, 99) , 'status' : 'success'}
            yield f'data: {random.choice(range(1,40))},SUCCESS\n\n'
            await asyncio.sleep(100)

    return StreamingHttpResponse(event_stream(), content_type='text/event-stream')

Но я не знаю, как сделать это ниже:

# user will be making this request
def post_request(request): 
    success = random.choice([True, False]) # NOT ACTUAL LOGIC
    return JsonResponse ({'success' : success }) 

# I would like to stream the success data from above
async def stream():
    # HOW CAN I STREAM ONLY WHEN post request

# we will listen here 
async def event_stream(request):
    return StreamingHttpResponse(stream(), content_type='text/event-stream') 
async def dashboard_oc_interface(request):
    """
    Sends server-sent events to the client.
    """
    async def event_stream():
          
        i = 0   
        while True: 
            # yield {'id' : random.randint(0, 99) , 'status' : 'success'}
            yield f'data: {random.choice(range(1,40))},SUCCESS\n\n'
            await asyncio.sleep(100)

    return StreamingHttpResponse(event_stream(), content_type='text/event-stream')

вы можете использовать декоратор метода запроса.

from django.views.decorators.http import require_http_methods


@require_http_methods(["GET", "POST"])
def my_view(request):
    # I can assume now that only GET or POST requests make it this far
    # ...
    pass

https://docs.djangoproject.com/en/5.0/topics/http/decorators/

Вернуться на верх