У меня есть приложение django, использующее AngularJS с кучей файлов JavaScript и шаблонов.
В моем шаблоне django я могу использовать тег {% static %}
для правильной ссылки на эти файлы, например, так:
<script src="{% static "angular/myapp.app.js" %}"></script>
Однако внешние файлы, очевидно, не могут быть разрешены с помощьюшаблонная структура django и поэтому это не вариант.Поэтому чаще всего люди просто жестко кодируют статический путь:
$routeProvider.when('/', {
// this works but is not ideal
templateUrl: '/static/pages/some-angular-template.html',
})
Я видел рекомендации по загрузке STATIC_URL
в javascript где-то и его использовании для создания ссылок.Примерно так:
Шаблон Django :
var STATIC_URL = {{ STATIC_URL }};
function getStaticUrl(templatePath) {
return STATIC_URL + templatePath;
}
Внешний JS :
$routeProvider.when('/', {
templateUrl: getStaticUrl('/pages/some-angular-template.html'),
})
Это немноголучше, но все же не идеально, потому что он обрабатывает только базовый путь.Если вы хотите использовать что-то вроде ManifestStaticFilesStorage
(что я и делаю), вы все равно не получите правильное разрешение файла.
Есть ли какое-нибудь хорошее решение этой проблемы?Варианты, которые я рассматриваю:
- Начальная загрузка всех необходимых URL-адресов в переменные JS внутри шаблона django
- Сохранение URL-адресов в некоторой скрытой разметке HTML с использованием тегов
data
(снова через шаблон django) - Создание API для получения URL-адресов (это кажется ненормальным и похоже, что это будет ужасно с точки зрения производительности).
Просто интересно, есть ли стандартная практика или библиотека, которая занимается этимвопрос?Я сталкивался с этой проблемой несколько раз и никогда не находил удовлетворительного решения.