Запустите Angular SPA внутри Джанго
У нас был автономный сервер внешнего интерфейса, который только обслуживал статические файлы AngularJS. Для SEO мы хотим использовать такой сервис, как Prerender, и, следовательно, должны запустить сервер, который может маршрутизировать URL-адреса.
Мы планируем использовать бэкэнд Django с промежуточным ПО Prerender для этого (поскольку у нас есть сервер, на котором работает Python).
Я могу предоставить статический файл для всех URL, используя:
urlpatterns += patterns('',
url(r'^$', 'django.views.static.serve',
kwargs={'path': 'index.html',
'document_root':settings.STATIC_ROOT}),
)
Теперь мой вопрос:
1- Приложение Angular использует локальные пути, такие как статические файлы, такие как styles/f.css, какой самый простой способ его обслуживания (с маршрутизацией) через Django? Какие-нибудь альтернативы использованию статического ключевого слова Django везде?
2- Django не рекомендует обслуживать статические файлы напрямую. Итак, что бы вы использовали для обслуживания SPA через механизм приложений (с маршрутизацией)?
1 ответ
Я рекомендую использовать какой-то префикс URL (STATIC_URL), например "статический", чтобы четко различать запросы к вашим представлениям Django и вашим статическим файлам.
Чтобы обслуживать ваши статические активы, вы можете использовать белизну.
Если вам действительно нужно избежать префикса STATIC_URL, вы можете создать подкласс или адаптировать DjangoWhiteNoise и использовать вместо префикса STATIC_URL набор шаблонов префиксов URL, таких как "css", "js" и "img".