IIS django static files not showinvg
Я пытаюсь развернуть свое приложение Django на IIS для работы, но оно не обслуживает мои статические файлы. Я посмотрел этот учебник: https://www.youtube.com/watch?v=APCQ15YqqQ0.
Сейчас мое приложение Django выглядит следующим образом, CSS не отображается
Я добавил виртуальный каталог и установил физический путь к статическому файлу в проекте.
В моем файле settings.py у меня есть
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
Я понятия не имею, чего мне не хватает. Пожалуйста, скажите мне, если вам нужна дополнительная информация.
Измените
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
to
STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'
Это должно исправить внутреннюю ошибку 500 при запросе файлов.
Дополнительно, как упоминает @LexLi
wfastcgi устарел, поэтому это уже не тот способ размещения веб-приложений Python на IIS. Вы можете перейти на HttpPlatformHandler
.
Для размещения веб-приложения Django с помощью Httpplatformhandler вы можете обратиться к следующим шагам.
Для Django физический путь - это путь к файлу manage.py вашего приложения.
Скачайте и установите Httpplatformhandler на IIS с помощью Windows Platform Installer. Или скачайте по этой ссылке.
Django APP with Httpplatformhandler Добавьте web.config, где ваше Django приложение определено.
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" requireAccess="Script" /> </handlers> <httpPlatform startupTimeLimit="10" startupRetryCount="10" stdoutLogEnabled="true" processPath="C:\Users\user\AppData\Local\Programs\Python\Python36\python.exe" arguments="manage.py runserver"> <environmentVariables> <environmentVariable name="foo" value="bar"/> </environmentVariables> </httpPlatform> </system.webServer> </configuration>
HttpPlaform обрабатывает процесс Python. ProcessPath это физический путь к исполняемому файлу python. Точно так же, как вы указываете python путь в переменной окружения windows. Чтобы получить доступ к исполняемому файлу python исполняемому файлу. Здесь вы должны указать python.exe в processPath.
.Аргументы - это те же аргументы, которые вы передаете при запуске любого веб-приложения python. приложение. Например, python manage.py runserver, где app.py - порт. номер - все это аргументы. В приведенном выше приложении, manage.py runserver передается для запуска приложения Django.
.Добавьте разрешение на приложение Django и папку Python, в которой находится ваш где находится ваш исполняемый файл.
Откройте свойства папки.
В разделе Безопасность нажмите на Изменить, затем нажмите на Добавить
.Введите имя объекта как IIS AppPool<yourappname>
.Нажмите на контрольное имя, если оно присутствует, нажмите OK и разрешите разрешения, которые вы хотели дать, затем примените их.
Запустите ваше приложение
.
Для получения дополнительной информации, пожалуйста, обратитесь к этому учебнику.