У меня есть приложение Django, и у меня есть следующие варианты использования:
- Локальная разработка.Поскольку мое приложение в основном простое, я предпочитаю обычный
manage.py runserver
подход.Поэтому я ожидаю, что мое приложение будет работать для этого случая. - Производственная среда.У нас есть один веб-сервер и хост-инструменты под разными URL-адресами, например
https://myserver.com/tool1
, https://myserver.com/tool2
и т. Д. Поэтому я хотел бы поместить свое приложение в эту структуру - (теоретически) За исключением варианта использования 2,Я могу хотеть разместить приложение в своем собственном домене, например
https://tool.myserver.com
Но когда я попытался это сделать, у меня возникла проблема со статическими файлами (вздох!), Потому что если у меня есть STATIC_URL
как относительный путь STATIC_URL='static/'
, тогда он не работает для "вложенных" страниц (то есть, если я на myserver.com/tool1/page
, тогда статический URL будет отображаться на myserver.com/tool1/page/static
, что неверно).С другой стороны, если я использую абсолютный путь STATIC_URL='/static/'
, то для случая 2 он вообще не работает, потому что приложение Django ничего не знает о /tool1
части URL, где он расположен.
Я могу использовать два разных варианта для STATIC_URL
в зависимости от среды и жесткого кода STATIC_URL='/tool1/static/'
, но тогда тот же код не будет работать для случая 3 ...
Как мне обращатьсяэта ситуация?
UPD
На самом деле я понял, что это больше похоже на общий вопрос nginx + backend, чем на Django.Потому что в конце дня веб-страница, созданная бэкендом, скорее всего, будет иметь src="/static/...."
(если я не добавлю несколько хаков в бэкэнд для вставки префикса / tool1).И мне интересно, как это обычно обрабатывается?Есть способ заменить фактический HTML-контент в nginx, но это действительно повлияет на производительность ...
UPD2
Похоже, что многие люди неправильно поняли мой вопрос, думая, что единственная проблема заключается встатические файлы.Однако это был просто пример, потому что, как правильно сказал Иван, такая же проблема существует и со ссылками.Обычно на странице у меня есть ссылки типа a href="/category/post?id=1"
.И, очевидно, когда сайт открывается как my.domain/tool1
, это преобразуется в my.domain/category...
, что неправильно (я хочу, чтобы он указывал на my.domain/tool1/category...
.)