【问题标题】:Django can't find static images in templatesDjango 在模板中找不到静态图片
【发布时间】:2012-11-04 15:14:21
【问题描述】:

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

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

【问题讨论】:

  • 如果http://127.0.0.1:8000/mattr/public/media/images/Mattr1.png 错误,您期望的网址是什么?这将有助于重新配置您的设置
  • @AamirAdnan 基本上来自我网站的根目录(manage.py 的位置),我的文件位于“/mattr/public/images/Mattr1.png”,所以我希望它能够显示出来
  • 那么应该是这样的&lt;img src="{{ STATIC_URL }}images/Mattr1.png"&gt;
  • @AamirAdnan 抱歉,那里应该也有媒体(在文件路径中)

标签: django django-staticfiles


【解决方案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,}),)

完成!

【讨论】:

  • 无需更改 urls.py 中的任何内容我已将静态重定向添加到我的 url.py,这阻止了此操作。
【解决方案2】:

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

STATIC_ROOT = 'mattr/static/'

【讨论】:

    【解决方案3】:

    在你的 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",
    )
    

    【讨论】:

    • 那么 STATIC_ROOT 行,我应该把我的文件放在哪里?看起来它在路径的某处添加了一个额外的“静态”此外,模板行由于 + 而导致语法错误
    猜你喜欢
    • 2021-06-25
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 2016-10-05
    • 2013-12-14
    • 1970-01-01
    相关资源
    最近更新 更多