rab*_*bid 5 django static lighttpd nginx cherokee
有没有人提供有关在Django生产应用程序上提供静态文件的简单分步教程?我阅读了Django 文档,这听起来确实很复杂...我试图使用诸如lighttpd,nginx或cherokee之类的其他服务器来提供静态文件,但是对我来说,设置这些都是希腊文。我下载了lighttpd,尝试按照说明进行安装,并在几秒钟内得到了一个错误。缺少这个或那个或其他...我不是UNIX专家,我也不擅长C / C ++,所以所有这些./configure和MAKE安装对我来说都是胡言乱语...所以我想我眼前的问题是:
非常感谢!
抱歉,没有逐步教程。但是,这里有一个概述可能会有所帮助:
因此,诀窍是您不告诉Django将提供的静态文件委派给特定的服务器。相反,您要告诉httpd哪些URL是通过Django提供的,哪些URL是静态文件。
换句话说,所有请求都到达Apache Web服务器。根据您在httpd.conf中指定的规则,网络服务器将决定该请求是针对静态文件还是针对django生成的动态文件。如果它是静态文件,它将仅提供文件。如果请求是针对动态文件的,它将通过modpython将请求传递给Django。
希望能有所帮助。
使用最新的 Django 版本(如 Django 3.2.6)时,我在开发和生产环境中提供媒体和静态文件时遇到了问题DEBUG = False
。
因此,我找到了来自多个堆栈溢出帖子的解决方案。
urls.py
from django.urls import include, path, re_path
from django.views.static import serve
Run Code Online (Sandbox Code Playgroud)
urls.py
static_urlpatterns = [
re_path(r"^media/(?P<path>.*)$", serve, {"document_root": settings.MEDIA_ROOT}),
re_path(r"^static/(?P<path>.*)$", serve, {"document_root": settings.STATIC_ROOT}),
]
Run Code Online (Sandbox Code Playgroud)
假设您的STATIC_ROOT
andMEDIA_ROOT
已在settings.py
文件中定义
static_urlpatterns
在urlpatterns
urlpatterns = [
path("admin/", admin.site.urls),
path("api/", include(api_urlpatterns)),
path("", include(static_urlpatterns)),
]
Run Code Online (Sandbox Code Playgroud)
希望它在开发和生产环境中都适用于您DEBUG = FALSE
。谢谢。
归档时间: |
|
查看次数: |
8938 次 |
最近记录: |