我有一个项目,我使用Angular2来使用我使用Django-Rest-Framework构建的rest API。目前我必须使用django开发服务器启动django api,例如,' python manage.py runserver'然后我必须使用' npm start'启动角度2服务器。或者通过cli,发送服务'。有什么方法可以设置我的django项目来为angular2项目提供服务吗?
答案 0 :(得分:3)
我假设Django-Rest-Framework在某处提供服务静态资产的选项,对吗?
如果这是真的,您可以配置角度cli以将其构建输出生成Django能够提供的文件夹。 ng build的输出是一组静态资产(js,css和index.html),可以由任何Web服务器提供。因此,如果您将.angular-cli.json中的git commit -a
选项更改为指向Django设置中的静态资源文件夹,则只需运行单个文件夹即可获益。
这种方法有两个主要缺点。首先,您现在必须积极记住每次更新角度项目时都要运行ng build,并希望查看新的更改 - 您将失去使用ng serve时发生的自动更新和重新加载。第二个缺点是在构建更改后,ng build明显慢于ng服务更新(因为前者必须写入文件系统,而后者只是将文件保存在内存中)。
在Angular文件的每次保存中都有记得要记住outDir
的方法,但要么需要使用gulp或grunt或其他任务运行器来监视文件更改并运行命令,或者利用Django用于自动文件查看和重新加载的任何功能,并弄清楚如何勾选(我不熟悉Django,但Rails有ng serve
来帮助这些类型的设置)。
我希望有所帮助。
(老实说,我对Rails进行了类似的设置并最终删除它并且只是并排运行两台服务器 - 这样的压力就更小了。)
答案 1 :(得分:1)
templates/<project-name>
目录中。使用此函数来提供index.html,它是angular
的入口点def index(request):
return render(request, template_name='<project-name>/index.html')
将所有角度静态文件放在STATICFILES_DIRS
中,以便collectstatic
命令收集它们。
在index.html中的静态文件路径中使用{{ STATIC_URL }}
来访问它们
现在,当您访问索引功能时,您的角度应用程序将会被提供。