Заставьте STATIC_ROOT зависеть от домена - PullRequest
0 голосов
/ 06 декабря 2018

В моем приложении Django я использую приложение staticfiles вместе с Whitenoise .

Мой веб-сервер доступен через два домена, и я хотел бы обслуживать разные статические файлы для каждого.

Моя идея заключалась в том, что www.my_domain.com / static / будет обслуживать, скажем, файлы в os.path.join(BASE_DIR, "staticfiles/my_domain/") и наоборот для www.my_other_domain.com/static/.

Каков наилучший способ достижения этого?Я подумал о трех решениях:

  1. Подклассы мест, к которым осуществляется доступ к STATIC_ROOT, чтобы он учитывал домен
  2. Использование nginx для маршрутизации www.my_domain.com/static/my_domain/ to www.my_domain.com / static /
  3. Используйте промежуточное ПО Django для достижения того же результата, что и 2. (например, этот стекпереполнение вопроса )

Спасибо!

1 Ответ

0 голосов
/ 06 декабря 2018

Я бы рекомендовал использовать третий вариант из вашего вопроса.Я бы сказал, что вместо того, чтобы создавать разные статические корни для каждого сайта, вы должны сохранять статический корень одинаковым и создавать две папки, содержащие статические файлы, в зависимости от вашего домена.Например:

-- STATIC_ROOT
 | -- domain_a
  | -- js
  | -- css
  | -- img
 | -- domain_b
  | -- js
  | -- css
  | -- img

Добавить связующее ПО , в котором можно добавить путь к домену к запросу :

def domain_middleware(get_response):
    def middleware(request):
        request.domain = request.META['HTTP_HOST'].split('.')[-1]
        response = get_response(request)
        return response
    return middleware

И в шаблоне, используйте это так:

{% static request.domain|add:'/js/something.js' %}
...