我知道有很多关于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
的图像。
我该如何解决这个问题?
答案 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"