将后端和前端服务放在开发中的同一个Web服务器后面

时间:2016-03-07 11:40:19

标签: angularjs django configuration webserver

我们正在开发一个Web应用程序。后端是用Django和AngularJS的前端实现的。前端采用标准前端工具开发。

当部署到生产机器时,前端和后端都将从同一个域提供(我们将使用nginx作为Web服务器)。但是,在开发时,它们位于不同的域上 - lite-server提供localhost:3000的前端文件,Django开发服务器处理对localhost:8000的请求。

如何在不安装nginx或其他成熟服务器的情况下将两者放在同一个域中?我们不希望在我们的开发机器上为我们使用的每个项目或每个项目的每个分支安装和配置nginx。

1 个答案:

答案 0 :(得分:3)

我用相同的堆栈做了一个项目。在我的例子中,整个前端位于Django项目目录中名为 static 的文件夹中。此静态文件夹在Django项目的 settings.py 文件中定义为静态根目录。

所以,会发生的事情是第一个html文件,比如 index.html 是通过Django使用其渲染引擎提供的,之后所有部分都是使用angular {{1}加载的。所有这些部分都驻留在静态文件夹中,以便它们可以作为静态文件提供。

除了partials之外,CSS,JS和图像等所有其他静态媒体也驻留在静态根目录中。

index.html 的快照:

uiRouter

如您所见,所有静态媒体的路径都是相对于静态根定义的。以下是静态根定义的样子:

<强> settings.py

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

以下是角度应用程序配置中定义的# 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
相关问题