1

更新 我的文件夹结构如下:运行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"),



)

默认.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>

在票证/view.py

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

然后在网络浏览器中,在 input 中http://127.0.0.1:8000/hello,它显示在此处输入图像描述

然后我从“hahhaa”加载图像,它链接到 在此处输入图像描述

没有显示图片,所以可能是图片路径不正确,图片没有加载成功。谁能帮我在我的 hello 方法 view.py 中显示图片?这个问题让我困惑了很长时间,提前感谢您的帮助。我的 django 版本是 1.4。

我已经找到解决办法了,不需要移动我的静态文件夹,只要和ticket/保持同一级别,然后在setting.py中添加ADMIN_MEDIA_PREFIX = '/static/admin/'

4

4 回答 4

0

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

并将 STATIC_ROOT 设置为上一级:

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

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

升级版:

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

于 2012-12-10T07:10:08.560 回答
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)
于 2012-12-10T08:05:21.330 回答
0

问题出在您的 urls 文件中。您将 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"),

)

于 2013-10-25T08:23:08.877 回答
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">
于 2020-04-28T18:14:28.807 回答