我非常困惑了30分钟,但我认为我的问题必须与Django 1.3的变化有关.
我的urls.py看起来像这样:
if settings.DEBUG:
urlpatterns += patterns('',
(r'^static/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.STATIC_ROOT, 'show_indexes': True}),
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
(r'^admin_media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.ADMIN_MEDIA_ROOT}),
)
Run Code Online (Sandbox Code Playgroud)
如果我访问/ static /,我会得到一个文件列表.例如,在我的根目录中有一个文件"iphone.png".去/static/iphone.png我得到一条404消息.
如果我将该部分更改为:
if settings.DEBUG:
urlpatterns += patterns('',
(r'^otherstatic/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.STATIC_ROOT, 'show_indexes': True}),
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
(r'^admin_media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.ADMIN_MEDIA_ROOT}),
)
Run Code Online (Sandbox Code Playgroud)
与/ otherstatic /相关的一切都非常有效.
我还应该添加/ media /或/ admin_media /没有问题.
这与Django的新静态文件应用程序有关吗?(如果是这样,谁认为完全打破这个非常简单的用例是个好主意?)
谢谢!
在Django 1.3中,django.contrib.staticfiles在您INSTALLED_APPS的框架中,框架将查找具有静态文件夹的所有应用程序下的所有静态文件.
这是一个例子:
project/
yourapp/
static/
iphone.png
settings.py
Run Code Online (Sandbox Code Playgroud)
假设yourapp在你的INSTALLED_APPS,你应该能够使用iphone.png以下网址访问图像:
http://localhost:8000/static/iphone.png
Run Code Online (Sandbox Code Playgroud)
对于您的情况,如果您希望staticfiles应用程序搜索下的文件project/static/,则需要将以下内容添加到您的settings.py:
import os
SITE_ROOT = os.path.realpath(os.path.dirname(__file__))
STATICFILES_DIRS = (
os.path.join(SITE_ROOT, 'static'),
)
Run Code Online (Sandbox Code Playgroud)
请注意上述情况,确保没有任何路径STATICFILES_DIRS与您设置的路径匹配STATIC_ROOT.后者主要用于生产.
设置static完成urls.py后,请随意从项目中删除该行STATICFILES_DIRS.
| 归档时间: |
|
| 查看次数: |
7954 次 |
| 最近记录: |