如何在 Django 视图中处理 Web 和移动请求

How to handle web and mobile requests in django view

我知道这是一个非常简单的问题,但我还不知道如何解决这个问题。

我有一个名为 Restaurant 的模型,其中包含有关餐厅的信息(名称、位置等)。我有一个视图使用 django-rest-framework 处理对 url localhost:8000/restaurants 和 returns 餐厅的 JSON 表示的请求。我这样做是因为我正在使用 android 应用程序中的这些数据。

现在我想从 Web 访问相同的 url,但这次我想查看带有餐厅信息的完全呈现的 html。

所以,我的具体问题是,我怎么知道(并因此以 JSON 流或 html 响应)请求是来自 android 应用程序还是来自如果两个请求都指向相同的 url 和 view?

,则为 Web 浏览器

我还不能评论,所以我会post在答案中。

您可能想尝试创建 Adam here 所描述的中间件,并且在您的视图中,您可以使用 is_phone、is_tablet 执行检查,然后以适当的方式发送响应格式

您可以使用 Django Rest Framework 的 TemplateHTMLRenderer。它根据请求的类型有条件地输出 JSON 或 HTML 页面。您可以为正在使用的视图定义以下属性

class YourView(generics.TypOfView):
    renderer_classes = (TemplateHTMLRenderer, JSONRenderer,)
    template_name = 'path_to_template.html'