Рендеринг HTML, когда запрос приходит из браузера, или отправка словаря JSON, когда запрос приходит с мобильного - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь создать бэкэнд для приложения, которое имеет как веб-интерфейс (разработанный с помощью начальной загрузки), так и мобильный интерфейс (разработанный с помощью Flutter).

Я пытался понять документацию для Django REST Framework о средствах визуализации, но я не могу понять, как обрабатывать различные типы запросов (например, веб-и мобильный), не имея двух разных функции для обеих платформ.

Есть ли лучший способ сделать это, чем передать флаг в запросе, в котором указано, мобильное или веб-приложение, и вернуть объект Response или объект рендеринга в зависимости от значения этого флага?

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Вы можете использовать регулярное выражение, которое разделит оба действия, как показано ниже:

def mobile(request):
"""Return True if the request comes from a mobile device."""

    IS_MOBILE=re.compile(r".*(iphone|mobile|androidtouch)",re.IGNORECASE)

    if IS_MOBILE.match(request.META['HTTP_USER_AGENT']):
        return True
    else:
        return False
0 голосов
/ 02 апреля 2019

Вы можете использовать заголовки запроса, чтобы выяснить, с какого устройства поступает ваш запрос, и соответственно вернуть ваши данные. В частности, пользовательский агент

...