2015-08-06 3 views
-1

Я пытаюсь развернуть простое веб-приложение Django на веб-сайте Azure. Я использую Python Tools для Visual Studio, потому что я не мог получить другой способ удаленно работать. У меня проблема с загрузкой моего шаблона, но ни один из статических файлов не загрузится. Я создал папку под названием статической и обновил settings.py следующим образом:Django Staticfiles не подается на Azure

STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),) 
STATIC_ROOT = '' 
STATIC_URL = '/static/' 

В моем шаблоне (называется index.html), который хранится в папке шаблонов также в корне, я имею в виду файлы следующим образом: <img class='social' src="{% static 'VSpace/images/128-twitter.png' %}"/>

Страница загружается с простым HTML (без CSS или изображений) и в представлении разработчика браузера. Я вижу, что 404 был возвращен при обращении к изображениям и остальным статическим файлам.

Я искал часы для решений и сделал всевозможные изменения. Кто-нибудь знает, что я могу делать неправильно?

+1

Вы настроили сервер на самом деле служить из/статический /? –

+0

Даниэль, я не уверен, что вы имеете в виду. Я тестировал свой код с помощью сервера разработки Python, и он работал нормально. Проблема возникает после публикации в Azure, где уже настроено веб-приложение. – Vinu

+0

Тогда я не могу поверить, что вы «искали часы». Это самый часто задаваемый вопрос о Django; и, тем не менее, в документации ** четко сказано, что Django сам не обслуживает активы в производстве, и вам нужно настроить свой веб-сервер для этого. Я действительно не понимаю, как вы могли это пропустить. –

ответ

4

На веб-сайтах Azure приложения python размещаются в IIS с использованием FastCGI. В предыдущей конфигурации web.config все запросы направляются в приложение Django. И используя VS для развертывания приложений Django, папка приложения и статическая папка находятся в корневой папке. Таким образом, мы можем вручную настроить параметры IIS, вот мои шаги:

1, я использую VS создать проект Django, и развернуть на веб-приложение Azure с настройками по умолчанию, они должны быть как следующее:

STATIC_ROOT = path.join(PROJECT_ROOT, 'static').replace('\\', '/') 
STATIC_URL = '/static/' 
STATICFILES_DIRS =() 

2, входа в Куду консоли вашего веб-приложения с помощью формата URL

https://<your_web_site_name>.scm.azurewebsites.net/DebugConsole 

, а также доступ в папке D: \ дом \ сайт \ Wwwroot \ статические, типа 'type nul>web.config' в комм и строку, чтобы создать пустой файл web.config.

3, Edit web.config copy3, Edit web.config скопируйте следующий код в файл, сохраните и перезапустите веб-сайт на портале Azure.

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
    <!-- this configuration overrides the FastCGI handler to let IIS serve the static files --> 
    <handlers> 
    <clear/> 
     <add name="StaticFile" path="*" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" /> 
    </handlers> 
    </system.webServer> 
</configuration> 

И мы можем получить более подробную информацию в Running Django Under Windows With IIS Using FastCGI

+0

Привет, Гари. После изменения web.config и перезапуска веб-сайта я попытался получить доступ к сайту и получил следующее сообщение: «Ресурс, который вы ищете, был удален, изменилось его имя или временно недоступно». – Vinu

+0

Привет, Гэри. Кажется, я не очень хорошо следил за твоим советом. Я проверил ссылку, которую вы предоставили в конце, и внес необходимые изменения. Я не совсем понимаю это сейчас, но я посмотрю на это более подробно. Я думаю, что буду настраивать CDN для обработки статических файлов в будущем.Спасибо :) – Vinu

+0

С помощью VS для развертывания Django папка staticfiles будет скопирована в корневую папку приложения командой IIS start up. Web.config управляет запросами к staticfiles. По вашему сообщению об ошибке, я думаю, что что-то не так в setup.py в проекте Django. Как бы то ни было, вы нашли способ справиться с этой проблемой. Поздравления. –

Смежные вопросы