未在 Azure 上提供 Django 静态文件

Django Staticfiles not being served on Azure

我正在尝试将一个简单的 Django Web 应用程序部署到 Azure 网站。我正在为 Visual Studio 使用 Python 工具,因为我无法通过任何其他方式进行远程工作。我遇到了一个问题,我的模板加载但 none 的静态文件将加载。我创建了一个名为 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。

我花了几个小时寻找解决方案并进行了各种更改。有谁知道我可能做错了什么吗?

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

1、我用VS创建了一个Django项目,我用默认设置部署在Azure Web app上,应该是这样的:

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

中获得更多信息

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

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