2015-01-03 32 views
1

我知道这是一个非常简单的问题,但我还没有理解如何解决这个问题。如何在Django视图中处理网页和移动请求

我有一个模型叫餐厅与餐厅(名称,位置等)的信息。我有一个视图处理对localhost:8000/restaurants的请求,并使用django-rest-framework返回餐馆的JSON表示。我已经这样做了,因为我正在使用来自android应用程序的这些数据。

现在我想从网络访问相同的网址,但这次我想看到一个完全呈现的HTML与餐厅的信息。

所以,我的具体问题是,如果两个请求都指向相同的URL,我怎么能知道(并因此响应一个JSON流或HTML)请求是来自android应用程序还是来自Web浏览器?视图?

回答

1

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

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

我还不能评论,所以我会将它发布在答案中。

你可能想尝试由亚当here描述创建中间件,和你的意见,你可以执行与is_phone,IS_TABLET检查,然后在适当的格式发送响应

+0

感谢您的快速响应。但是,如果用户通过智能手机的浏览器访问该网址会怎么样?它将被检测为is_phone,但我仍然想向他展示html。如果请求来自本机android/iOS应用程序,我只想返回JSON供稿。你有什么建议? – caroso1222