django - 如何从 django 的开发服务器提供 Angular 2 应用程序?

标签 django angular django-rest-framework

我有一个项目,我使用 Angular2 来使用我用 Django-Rest-Framework 构建的 REST API。目前,我必须使用 django 开发服务器(例如“python manage.py runserver”)启动 django api,然后我必须使用“npm start”或通过 cli“ngserve”启动 Angular 2 服务器。有什么方法可以设置我的 django 项目来为 angular2 项目提供服务吗?

最佳答案

我假设 Django-Rest-Framework 在某个地方有一个用于提供静态 Assets 的选项,对吗?

如果这是真的,您可以配置 Angular cli 以将其构建输出生成到 Django 能够提供服务的文件夹中。 ng build 的输出是一堆静态资源(js、css 和 index.html),可以由任何 Web 服务器提供服务。因此,如果您将 .angular-cli.json 中的 outDir 选项更改为指向 Django 设置中的静态资源文件夹,您就可以获得只需运行单个文件夹的好处。

这种方法有两个主要缺点。首先,你现在必须主动记住每次更新 Angular 项目并希望看到新的更改时运行 ng build - 你会失去使用 ngserve 时发生的自动更新和重新加载。第二个缺点是,在进行更改后,ng build 明显比 ngserve 更新慢(因为前者必须写入文件系统,而后者只是将文件保留在内存中)。

有很多方法可以记住在每次保存 Angular 文件时执行 ngserve,但这需要使用 gulp 或 grunt 或其他任务运行程序来监视文件更改并运行一个命令,或者利用 Django 具有的自动文件监视和重新加载的任何功能,并找出如何连接到它(我不熟悉 Django,但 Rails 有 guard gem 来帮助这些类型的设置)。

希望对您有所帮助。

(老实说,我对 Rails 进行了类似的设置,最终将其删除并只是并排运行两个服务器 - 这样压力更小)。

关于django - 如何从 django 的开发服务器提供 Angular 2 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43104711/

相关文章:

django - django.forms.Form 和 rest_framework.serializers 之间是否有转换器?

django - Django rest ModelViewSet过滤对象

javascript - 无法使用 ng-packagr 获取已发布的包

angular - Firebase 上托管的 Ionic 4 应用程序仅在重新加载时返回 404

angular - 为什么这个 ngif 不能与 bool 值一起正常工作?

python - 将日期时间序列化为整数时间戳

python - 我怎样才能在我的模板中获取 JSONfield 的值

python - 在 django cms 中以多种语言提供页面的最佳方法

python - 使用反向关系第一行的列注释 Django 查询集

python - 数据库优先 Django 模型