文件夹设置:
你的项目根目录应该是这样的:
/app1
/app2
/media
/static
/templates
urls.py
settings.py
manage.py
The media文件夹应该保存图像、下载内容和其他在网站正常使用期间(即开发完成后)可能上传的材料
The static文件夹应该包含网站开发的所有 CSS/JS 和其他材料
设置.py:
媒体根目录是上面提到的静态文件夹的绝对服务器路径。这意味着它应该是这样的:
MEDIA_ROOT = "/User/Bob/Sites/MySite/Project_root/media/"
MEDIA_URL是您在查看网站时应该访问媒体文件的相对浏览器 URL。应该是(通常)
MEDIA_URL = "media/"
这意味着所有材料都可以在以下位置查看http://example.com/media/ http://example.com/media/
相似地,静态根应该是这样的
STATIC_ROOT = "/User/Bob/Sites/MySite/Project_root/static/"
and STATIC_URL be
STATIC_URL = "static/"
提供文件:
现在您已经告诉 django 这些文件夹应该在哪里,以及访问它们的正确 URL,您需要正确处理对文件夹的所有请求。
通常,当您在生产中时,您希望网络服务器负责提供静态文件和媒体文件。
如果你正在开发,你可以让 django 开发服务器为你提供服务。
为此,您告诉它将所有传入的请求路由到http://example.com/media http://example.com/media到您的 MEDIA_ROOT 以及传入的所有请求http://example.com/static http://example.com/static到您的 STATIC_ROOT。
为此,您需要向 URLS.py 添加一些 URL,如下所示:
from django.conf import settings
if settings.DEBUG:
urlpatterns += patterns('',
url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT,
}),
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.STATIC_ROOT,
}),
)
Extra:
如果您有多个应用程序,每个应用程序都有自己的 CSS 和 JS 文件,您可能不想将它们放入一个 /static/ 文件夹中。将它们放在它们所属应用程序的子文件夹中可能会很有用:
/app1/static/ # Specific static folder
/app2/static/
/media/
/static/ # Root static folder
现在,您的网络服务器/开发服务器仅在您指定的位置查找静态文件(即根静态文件夹),因此您需要收集子文件夹中的所有文件并将它们复制到根静态文件夹。您可以手动执行此操作,但 django 提供了一个命令来为您执行此操作(这是静态应用程序的全部要点)
./manage collectstatic