2016-06-09 40 views
4

我是用反應我的項目之一路由器,等反應過來是前端庫和路線是由反應路由器和後端的意見管理是Django和Django中的API休息具有單頁應用程序的真實URLs?

,所以我經歷的反應,路由器文檔和我碰到這個: -

配置您的服務器 您的服務器必須準備好處理真實的URL。當應用程序第一次加載/它可能會工作,但隨着用戶導航,然後在/ accounts/23處刷新,您的Web服務器將收到/ accounts/23的請求。您將需要它來處理該URL並將您的JavaScript應用程序包含在響應中。**

我想知道如何與django視圖一起工作。

+0

你好,這是一個相當主觀的答案(這就是爲什麼我添加一個評論而不是答案),但我相信你不應該遵循這條路,除非你願意咬緊牙關並創建一個完整的單頁面的網頁,應用。由於您在django中擁有後端視圖,因此我建議您只使用散列路由進行客戶端路由。我在我的關於redux的帖子上寫了一個相當廣泛的觀點:http://spapas.github.io/2016/03/02/react-redux-tutorial/#store-js(查看我對HashHistory和BrowserHistory的評論) – Serafeim

回答

3

在開發服務器上,您只需設置一個不以api/static/開頭的所有內容的路由,即可返回基本的app.html文件。示例

class AppHTMLView(View): 

    def get(self, request): 
     fn = os.path.join(settings.BASE_DIR, "app", "app.html") 
     with open(fn, 'r') as fh: 
      return HttpResponse(fh.read()) 

並且在您的生產服務器上,相應地配置Nginx。像這樣的東西

... 
location/{ 
    root /var/www/example.com/static_files/; 
    try_files '' /app.html =404; 
} 

但這並不是特定於React的,但是對所有單頁應用程序都是通用的。

+0

是啊,它應該是所有單頁應用程序的常見問題,我將編輯問題標題,nginx其中一個是我感覺最好的解決方案 –