将图像插入Django模板

时间:2012-05-09 02:53:00

标签: python django

我知道有很多关于Django模板图像的问题,但我似乎无法让我的工作。我目前在我的项目中有一个应用程序,并且具有看起来像

的静态文件夹结构
    djangoproject/appname/static/images/ 

在同一个django应用程序的templates文件夹中,我有各种HTML文件需要引用上面显示的文件夹中的图像。在我的settings.py文件夹中,我有

    STATIC_ROOT=''
    STATIC_URL = 'appname/static/' 
    STATICFILES_DIRS = ( 
    ) 
    TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.static',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',

在我的模板文件中,我有

    <a href="AddTransaction.html"><img id="btnTransaction" src="{{ STATIC_URL }}images/btnTransaction.png"/></a>

当我运行开发服务器时,它会一直查看appname/images/btnTransaction.png的图像。

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

STATIC_FILES_DIR元组中,您需要为计算机上的静态目录提供一个绝对路径的字符串。因此,如果你是* nix,如果你在Windows上,它将是'/User/path/to/django/static/dir/''C:/path/to/django/static/dir/'

STATIC_URL,就像你在这里看到的那样,是HTML中输出的内容,用于相对于浏览器的图像的绝对路径。如果您在本地运行,或者'http://127.0.0.1:8000/static/'生成'http://mydomain.com/static/',如果您正在制作'http://static.mydomain.com/static/',如果您有CDN或'/static/'可以为所有人工作,则可以{{1}}如果您为静态文件和应用程序使用相同的主机。

答案 1 :(得分:1)

您希望图片的路径位于 web 可访问的位置,远离django和您的应用(除非您添加访问控制,然后您需要一个单独的功能你的意见来处理)。事实是,当模板呈现在服务器端时,img标签的src不会拉入图像,但是在客户端和客户端对图像发出单独的请求。如果网址无法找到图片,则无法显示。

答案 2 :(得分:1)

删除appname并更改为STATIC_URL= '/static/'

答案 3 :(得分:0)

而不是使用“静态”使用“媒体”

喜欢这样

settings.py

# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = '/Users/YOUR USERNAME/djcode/blankpage/media/'

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = '/media/'

和urls.py

url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root':  settings.MEDIA_ROOT}),
模板中的

像这样引用你的文件

href="/media/styles/profile.css"