将静态图像添加到django

时间:2012-12-10 06:22:05

标签: python django

更新了我的文件夹结构如下:     运行manage.py collectstatic coomand之后,django的静态文件被复制到我的项目文件夹,如下所示,然后我把我的logo.png放到它的img /

 mysite_new/

      manage.py
      mysite/
      ------ __init__.py
             urls.py
             setting.py
             wsgi.py
             templates/
                      default.html
             static/
                     img/
                          logo.png
                          .....
      ticket/
      ------__init__.py
            models.py
            view.py
            urls.py
            ......

在setting.py中,我设置了

PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
MEDIA_URL = ''
MEDIA_ROOT = ''
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(PROJECT_PATH,'static')
STATICFILES_DIRS = (
)
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

并在mysite / urls.py中设置

        urlpatterns = patterns('',
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^hello/', hello),
    url(r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT },name="media"),



)

default.html中

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
<title>staitc sample</title>
</head>
<body>
    <img src="{{ STATIC_URL }}img/logo.png"" alt="hahhaa">
</body>
</html>

在ticket / view.py

def hello(request):
     return render_to_response( 'admin/default.html')

然后在网络浏览器中,在输入http://127.0.0.1:8000/hello中,它会显示enter image description here

然后我从“hahhaa”加载图像,它链接到 enter image description here

没有显示图片,因此图像路径可能不正确,图像未成功加载。   谁可以帮助我在我的hello方法view.py中制作你的图片图片?   这个问题困扰了我很长一段时间,感谢你的帮助。   我的django版本是1.4。

我已经找到了解决方案,无需移动我的静态文件夹,只需将其与ticket /保持相同级别,然后在setting.py中添加ADMIN_MEDIA_PREFIX ='/ static / admin /'

4 个答案:

答案 0 :(得分:0)

您应该将静态目录移动到mysite。徽标的网址为127.0.0.1:8000/static/images/logo.png

并将STATIC_ROOT设置为一级:

STATIC_ROOT = os.path.join(PROJECT_ROOT, '..', 'static')

这是collectstatic命令将复制项目和应用程序的静态文件的地方。

UPD:

url(r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT },name="media"),

这里应该是settings.STATIC_ROOT。对于开发,您还可以使用:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()

https://docs.djangoproject.com/en/dev/howto/static-files/#staticfiles-development

答案 1 :(得分:0)

在urls.py

中尝试以下操作
from django.conf import settings
from django.conf.urls.static import static

位于文件底部

if settings.DEBUG and settings.MEDIA_ROOT:
    urlpatterns += static(settings.MEDIA_URL,
        document_root=settings.MEDIA_ROOT)

答案 2 :(得分:0)

问题出在您的网址文件中。你带django服务函数路径到媒体根而不是你的静态。

试一试:

urlpatterns = patterns('',
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^hello/', hello),
url(r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.STATIC_ROOT },name="media"),

答案 3 :(得分:0)

语法错误

<img src="{{ STATIC_URL }}img/logo.png"" alt="hahaha">

正确的语法-

<img src="{{ STATIC_URL }}img/logo.png" alt="hahhaa">

<img src="{% static 'img/logo.png' %}" alt="hahhaa">