我已经查看了这里和文档中的所有示例,但它根本不起作用
所以在 settings.py 文件中我有
STATIC_ROOT = '/mattr/static/'
STATIC_URL = '/mattr/public/'
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',)
TEMPLATE_CONTEXT_PROCESSORS = ('django.core.context_processors.static',)
TEMPLATE_DIRS = ('mattr/public', )
基本上处理静态文件所需的一切。
在 urls.py 中,我有正常的网页模式(模板加载得很好)并且有额外的行
urlpatterns += staticfiles_urlpatterns()
在 views.py 中,我(这是主页):
def home(request):
t = get_template('index.html');
html = t.render(RequestContext(request))
return HttpResponse(html)
在模板文件 index.html 中,我有一行
<img src="{{ STATIC_URL }}media/images/Mattr1.png">
然而它永远不会显示图像。即使我试图直接在 http://127.0.0.1:8000/mattr/public/media/images/Mattr1.png 上转到图像文件,它也会给我一个Page Not Found错误。 我有点困惑路径的起点,但因为我的模板页面加载我认为我的路径正确
答案 0 :(得分:1)
当你谈论静态文件时,请执行以下操作:
STATIC_URL = '/static/' #or whatever you want
STATICFILES_DIRS = (
'/path/to/static/root/directory/',
)
不要忘记昏迷或django的管理员不会有它的CSS。
已完成,无需更改urls.py
如果您在谈论媒体,请执行以下操作:
MEDIA_ROOT = '/media/' # or whatever you want
MEDIA_URL = '/path/to/media/root/directory'
并将其放在myproject.urls
的底部:
import settings
urlpatterns += patterns('', url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT,}),)
完成!
答案 1 :(得分:0)
在settings.py中尝试此操作:
import os
DIRNAME = os.path.dirname(__file__)
STATIC_ROOT = os.path.join(DIRNAME, 'static')
STATIC_URL = '/static/'
模板中的:
{{STATIC_URL}}css/etc...
您也会覆盖TEMPLATE_CONTEXT_PROCESSORS
而不是这样做:
在您的settings.py
import django.conf.global_settings as DEFAULT_SETTINGS
TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
"whatever_your_adding",
)
答案 2 :(得分:0)
在路径前面使用'/'表示你是从根目录引用的,我猜不是这种情况。试着这样做。
STATIC_ROOT = 'mattr/static/'