2

我在这里和文档中查看了几乎所有示例,但它根本不起作用

所以在我的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 错误。我有点困惑路径从哪里开始但是因为我的模板页面加载我认为我的路径是正确的

4

3 回答 3

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,}),)

完毕!

于 2012-11-16T04:04:55.933 回答
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",
)
于 2012-11-15T22:41:46.810 回答
0

在路径前面使用“/”表示您是从根目录引用的,我猜不是这样。尝试这样做。

STATIC_ROOT = 'mattr/static/'
于 2012-11-15T23:44:57.523 回答