Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当请求来自浏览器时呈现HTML或当请求来自移动设备时发送JSON字典_Python_Django_Python 3.x_Responsive Design_Django Rest Framework - Fatal编程技术网

Python 当请求来自浏览器时呈现HTML或当请求来自移动设备时发送JSON字典

Python 当请求来自浏览器时呈现HTML或当请求来自移动设备时发送JSON字典,python,django,python-3.x,responsive-design,django-rest-framework,Python,Django,Python 3.x,Responsive Design,Django Rest Framework,我正在尝试为一个应用程序构建一个后端,它既有一个用bootstrap设计的web前端,也有一个用Flutter设计的移动前端 我一直在试图理解Django REST框架关于渲染器的文档,但是我不知道如何处理不同类型的请求,例如,如果两个平台都没有两个不同的功能,一个来自web,一个来自mobile 有没有更好的方法来实现这一点,而不是在请求中传递一个标志,表明该应用程序是移动的还是web的,并根据该标志的值返回响应对象或渲染对象?您可以使用一个正则表达式来拆分这两个操作,如下所示: def mo

我正在尝试为一个应用程序构建一个后端,它既有一个用bootstrap设计的web前端,也有一个用Flutter设计的移动前端

我一直在试图理解Django REST框架关于渲染器的文档,但是我不知道如何处理不同类型的请求,例如,如果两个平台都没有两个不同的功能,一个来自web,一个来自mobile


有没有更好的方法来实现这一点,而不是在请求中传递一个标志,表明该应用程序是移动的还是web的,并根据该标志的值返回响应对象或渲染对象?

您可以使用一个正则表达式来拆分这两个操作,如下所示:

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

您可以使用请求头来确定您的请求来自哪种设备,并相应地返回数据。更具体地说,

我是否需要返回响应或渲染取决于此?我是否需要返回两个不同的对象取决于此?这取决于您,您可以使用mobileyour_请求:和else:然后您决定要执行的操作,在这种情况下,返回一个响应对象或渲染对象我想这就是你想要的。