我按照下面的教程在azure上创建了一个django项目。
http:/www.windowsazure.comen-usdeveloppythontutorialsweb-sites-with-django
一切都很好,直到我尝试安装django_admin_bootstrapped应用程序。现在所有静态请求都返回404错误。我不知道是新的应用导致了这个问题,还是只是暴露了它。
我有这个问题。
STATIC_ROOT = ''
# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
#os.path.join(PROJECT_DIR, 'site-packages/django_admin_bootstrapped/static'),
)
我在网上看了很多资料 有些人说你必须配置你的服务器来提供静态文件。我没有直接访问服务器,这是一个azure网站,我是通过git部署的。就像我说的,在我尝试安装这些引导管理的应用程序之前,管理和一切都曾经工作。现在即使应用程序不在INSTALLED_APPS下,我也没有得到任何css或js文件。
谢谢!
我遇到了这个问题,建议的答案似乎都不适合。我的奇怪的解决方案是 关掉 Python在Azure网站配置页面上。
我通过安装PTVS Django示例,并按照本教程的步骤,得出了这个奇怪的结论。http:/azure.microsoft.comen-usdocumentationarticlesweb-sites-python-ptvs-django-sql。. 我的网站和工作教程之间的唯一区别是Django被关闭了!如果有人能解释一下,我很乐意听到(PHP已启用!)。如果有人有一个解释,我很乐意听到它(PHP是启用的!!)。
我在这个页面上找到了我的解决方案。http:/mrtn.meblog20120627running-django-under-windows-with-iis-using-fcgi。
我必须创建一个中央静态文件夹,并为iis添加一个web.config来服务文件。web.config如下。
<?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>
希望这能帮助到别人!
我没有足够的代表投上去,但事实上这个答案对我来说在Azure上也是可行的,而且到目前为止,似乎是唯一的方法。只要记住,web.config需要放在正确的位置......我显然有多个静态文件夹,因为我在尝试不同的解决方法。
如果在尝试了所有其他建议的解决方案后,你仍然发现自己的麻烦,你可能要明白,取决于运行你的应用程序的服务器是静态文件的方式服务器。Django有自己的服务器,它是通过使用命令来运行的。
python manage.py runserver
但是PAAS提供商在大多数情况下并不使用这个服务器,在大多数情况下选择的是gunicorn。Azure有时会使用IIS的FastCGI处理程序,但在目前的情况下,它已经足够智能地检测到一个django应用,并尝试使用django的默认服务器。
所以,你要做的第一步是找出azure使用什么服务器来运行你的应用,你可以通过阅读azure的日志来了解。
https:/ YOUR APP NAME.scm.azurewebsites.netapilogstream。
如果你确认azure使用的是django的默认服务器,你必须记住,当在生产环境中,django不会自动服务器静态文件。你必须配置静态文件夹的url。所以在你的configls.py中设置静态文件的url,像这样。
from django.conf import settings
from django.conf.urls.i18n import i18n_patterns
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import include, path
urlpatterns = i18n_patterns(path('admin/', admin.site.urls), prefix_default_language=False) + \
static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + \
static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
如你所见,我启用了admin,static和media urls。这足以让django的默认服务器知道在哪里找到并提供静态文件(还有媒体文件,以及管理员路径)
是的,我可以确认,在Azure Web Sites上部署Django的静态文件的 "正确位置 "是Web根目录中的 "静态 "目录。
第一步:创建一个名为 static
在你的网站根目录下
第二步:编辑Django的 settings.py
并设置 STATIC_ROOT = 'D:/home/site/wwwroot/static'
第3步:在你的模板中使用构造 {% static "static_file_name" %}
.