2015-01-03 31 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