Django Staticfiles不在Azure上提供

时间:2015-08-06 21:12:56

标签: python css django azure django-staticfiles

我尝试将简单的Django Web应用程序部署到Azure网站。我在Visual Studio中使用Python工具,因为我无法通过任何其他方式远程工作。我有一个问题,我的模板加载但没有静态文件会加载。我创建了一个名为 static 的文件夹,并更新了settings.py,如下所示:

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.

我已经搜索了几个小时的解决方案并进行了各种更改。有谁知道我可能做错了什么?

2 个答案:

答案 0 :(得分:4)

在Azure网站上,使用FastCGI在IIS上托管python应用程序。使用前面的web.config配置,所有请求都将路由到Django应用程序。使用VS部署Django应用程序,app文件夹和静态文件夹都在根文件夹中。所以我们可以手动配置IIS设置,这是我的步骤:

1,我使用VS创建一个Django项目,并使用默认设置部署在Azure Web应用程序上,它们应如下所示:

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

2,通过URL

的格式登录Web应用程序的Kudu控制台
https://<your_web_site_name>.scm.azurewebsites.net/DebugConsole

,并在文件夹 D:\ home \ site \ wwwroot \ static 中访问, 在命令行中键入'type nul>web.config'以创建空的web.config文件。

3,编辑web.config copy3,编辑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

中获取更多信息

答案 1 :(得分:1)

您可以尝试 WhiteNoise,它非常简单,因为它专门为在 Django STATIC_ROOT 变量指定的文件夹中找到的那些文件提供服务。

看看这个链接,它描述了如何设置https://docs.microsoft.com/en-us/azure/app-service/configure-language-python#serve-static-files-for-django-apps