如何在 IIS 上为不同的 Django 应用程序访问不同的静态文件?
How to access different static files for different Django applications on IIS?
假设我有两个 Django 应用程序:DjangoApp1 和 DjangoApp2
我在 IIS 中用 DjangoApp1 创建了一个网站,在端口 80 上有一些 IP(192.168.1.1),我可以在 192.168.1.1/
上访问这个网站,静态文件由虚拟目录 static
加载,并且这个网站完全符合预期。
现在,对于第二个应用程序 DjangoApp2,我需要以这种方式通过相同的 IP 地址访问它:192.168.1.1/app2/
,因此我在我的网站上创建了一个名为 app2[=25= 的应用程序] 并相应地配置它。现在,由于 DjangoApp2 有一组不同的静态文件,我需要配置我的服务器,以便它也加载这些文件。因为我已经有一个名为 static 的虚拟目录,所以我无法创建一个同名的目录。我尝试创建 app2_static 和所有其他组合,但这些文件没有加载。此应用程序的所有其他功能均正常工作,不依赖于本地静态文件。
如何配置 StaticFileModule 以便它为 DjangoApp2 加载必要的文件,而不干扰 DjangoApp1 的文件?
我使用了 Django 的 FastCgi 和 wfastcgi 模块进行部署配置。
确保它在 settings.py
STATIC_URL = '/static/'
将您的静态文件存储在应用程序文件夹中名为 static 的文件夹中,因此:
DjangoApp1/static/DjangoApp1/example.jpg.
DjangoApp2/static/DjangoApp2/example.jpg.
我从 Django docs
中得到以上信息
同样对于部署,你需要 运行 collectstatic
并让 django 为你将所有静态文件生成到 1 个文件夹中。这里是 the link about this in the docs
当我弄乱我的“DjangoApp2”的 settings.py
文件时,我自己找到了解决方案。我首先考虑将我的 DjangoApp2 的静态文件添加到 DjangoApp1 的静态目录中,但我认为这可能非常低效,所以我开始调整我的 settings.py 文件中的一些更改。
因此,我没有更改 IIS 服务器中的某些内容,而是更改了我的 STATIC_URL
.
因此,首先我为我的静态文件创建了一个虚拟目录并将其命名为 app2_static
。它的物理路径是BASE_DIR/static
.
The BASE_DIR is the directory where the manage.py file of DjangoApp2
is located.
然后,我把STATIC_URL
改成了'/app2_static/'
。然后我重新启动了 IIS 服务器,网页上加载了静态文件。
Make sure that your web.config
file in the static directory of your DjangoApp2 contains only StaticFileModule and no FastCGIModule.
假设我有两个 Django 应用程序:DjangoApp1 和 DjangoApp2
我在 IIS 中用 DjangoApp1 创建了一个网站,在端口 80 上有一些 IP(192.168.1.1),我可以在 192.168.1.1/
上访问这个网站,静态文件由虚拟目录 static
加载,并且这个网站完全符合预期。
现在,对于第二个应用程序 DjangoApp2,我需要以这种方式通过相同的 IP 地址访问它:192.168.1.1/app2/
,因此我在我的网站上创建了一个名为 app2[=25= 的应用程序] 并相应地配置它。现在,由于 DjangoApp2 有一组不同的静态文件,我需要配置我的服务器,以便它也加载这些文件。因为我已经有一个名为 static 的虚拟目录,所以我无法创建一个同名的目录。我尝试创建 app2_static 和所有其他组合,但这些文件没有加载。此应用程序的所有其他功能均正常工作,不依赖于本地静态文件。
如何配置 StaticFileModule 以便它为 DjangoApp2 加载必要的文件,而不干扰 DjangoApp1 的文件?
我使用了 Django 的 FastCgi 和 wfastcgi 模块进行部署配置。
确保它在 settings.py
STATIC_URL = '/static/'
将您的静态文件存储在应用程序文件夹中名为 static 的文件夹中,因此:
DjangoApp1/static/DjangoApp1/example.jpg.
DjangoApp2/static/DjangoApp2/example.jpg.
我从 Django docs
中得到以上信息同样对于部署,你需要 运行 collectstatic
并让 django 为你将所有静态文件生成到 1 个文件夹中。这里是 the link about this in the docs
当我弄乱我的“DjangoApp2”的 settings.py
文件时,我自己找到了解决方案。我首先考虑将我的 DjangoApp2 的静态文件添加到 DjangoApp1 的静态目录中,但我认为这可能非常低效,所以我开始调整我的 settings.py 文件中的一些更改。
因此,我没有更改 IIS 服务器中的某些内容,而是更改了我的 STATIC_URL
.
因此,首先我为我的静态文件创建了一个虚拟目录并将其命名为 app2_static
。它的物理路径是BASE_DIR/static
.
The BASE_DIR is the directory where the manage.py file of
DjangoApp2
is located.
然后,我把STATIC_URL
改成了'/app2_static/'
。然后我重新启动了 IIS 服务器,网页上加载了静态文件。
Make sure that your
web.config
file in the static directory of your DjangoApp2 contains only StaticFileModule and no FastCGIModule.