2016-03-07 29 views
2

我們正在開發一個Web應用程序。後端用Django和AngularJS的前端實現。前端是用標準的前端工具開發的。將後端和前端服務放在開發中的同一個Web服務器後面

當部署到生產機器時,前端和後端將從同一個域(我們將使用nginx作爲Web服務器)提供。然而,在開發時,它們處於不同的域 - lite-server服務於localhost:3000的前端文件,Django開發服務器處理對localhost:8000的請求。

如何在不安裝nginx或其他完整服務器的情況下將兩者都放在同一個域中?我們不希望在我們的開發機器上爲我們使用的每個項目或每個項目的每個分支安裝和配置nginx。

回答

3

我做了一個具有相同堆棧的項目。就我而言,整個前端位於Django項目目錄中的一個名爲static的文件夾中。這個靜態文件夾被定義爲Django項目的settings.py文件中的靜態根目錄。

那麼,什麼情況是,第一個HTML文件,說的index.html利用其渲染引擎通過Django的服務之後,所有的諧音是採用了棱角分明的uiRouter所有這些諧音加載駐留在靜態文件夾,以便他們可以作爲靜態文件。

隨着部分,所有其他靜態媒體如CSS,JS和圖像也駐留在靜態根目錄。

快照的

的index.html

{% load staticfiles %} 
<html> 
    <head> 
     <link href="{% static 'development/assets/stylesheets/lib/normalize.css' %}" rel="stylesheet" type="text/css"> 
    </head> 
</html> 

正如你所看到的,對於所有的靜態媒體的路徑是相對於定義爲THET靜態根。這裏的靜態根定義的樣子:

settings.py

# Build paths inside the project like this: os.path.join(BASE_DIR, ...) 
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 

STATIC_URL = '/static/' 

# Look here for `static` resource 
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'), 
) 

下面是角應用程序的配置定義uiRouter的狀態的快照:

$stateProvider.state("home", { 
    url: "", 
    controller: "HomeCtrl", 
    templateUrl: "/static/development/templates/home.html" 
}) 
相關問題