【问题标题】:Django, not able to load image, but css is loadedDjango,无法加载图像,但加载了css
【发布时间】:2015-10-24 17:55:29
【问题描述】:

我可以根据 djangoproject 提供的教程加载 css 文件,但没有加载图像。 这是文件结构: appname/static/mess/img/burger.jpg

这是我尝试加载图像的 login.html 文件。

`<html>
 <head>
     <title>Login | Mess @ IIIT Sri City</title>
     {% load staticfiles %}
     <link rel="stylesheet" type="text/css" href="{% static 'mess/css/style.css' %}"> 
     <link rel="stylesheet" type="text/css" href="{% static 'mess/css/bootstrap.min.css' %}">
 </head>
 <body>
     <div class="container">
         <div id="left-content" class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
         {% load staticfiles %}
         <center><img src="{% static 'mess/img/burger.jpg' %}" alt="Please Login here"></center>
         </div>
         <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
             <form action="" method="post">{% csrf_token %}
                 {{ form}}
                 <input  type="submit" value="Submit" />
             </form>
         </div>
     </div>
 </body>
`

如果您能帮我解决这个问题,那将是一个很大的帮助。 PS:我是 Django 的初学者。 Django 版本:1.8 如果您需要更多信息,请告诉我。提前致谢。

【问题讨论】:

  • 为什么在同一个页面上有两次 {% load staticfiles %}?
  • 试试 {{STATIC_URL}} mess/img/burger.jpg
  • @PierangeloOrizio 我也试过了,但它仍然没有加载。具有讽刺意味的是,正在加载 css 文件。
  • 在 url.py 中有配置静态文件吗?
  • 检查IMG所在文件夹的权限

标签: django django-templates django-staticfiles django-static


【解决方案1】:

这是因为该文件夹没有必要的权限,Django 无法访问它。

【讨论】:

    【解决方案2】:

    你在url.py中配置了静态文件吗?

    if settings.DEBUG:  
            urlpatterns += patterns('',  
                                    #REMOVE IT in production phase  
                                    (r'^media/(?P<path>.*)$', 'django.views.static.serve',  
                                    {'document_root': settings.MEDIA_ROOT})
              )
    urlpatterns += staticfiles_urlpatterns()
    

    【讨论】:

      【解决方案3】:

      这里有一些改变。您可以为您的模板复制并粘贴以下代码,并将其下方的设置粘贴到您的 urls.py 中:

      html:

      {% load staticfiles %}
      
      <html>
          <head>
              <title>Login | Mess @ IIIT Sri City</title>
              <link rel="stylesheet" type="text/css" href="{% static 'mess/css/style.css' %}"> 
              <link rel="stylesheet" type="text/css" href="{% static 'mess/css/bootstrap.min.css' %}">
          </head>
          <body>
              <div class="container">
                  <div id="left-content" class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
                      <center><img src="{% static 'mess/img/burger.jpg' %}" alt="Please Login here" /></center>
                  </div>
                  <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
                      <form action="" method="post">{% csrf_token %}
                          {{ form }}
                          <input type="submit" value="Submit" />
                      </form>
                  </div>
              </div>
          </body>
      </html>
      

      网址:

      if settings.DEBUG:
          urlpatterns += patterns('',) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
          urlpatterns += patterns('',) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
      

      在 html 中,我在顶部添加了 {% load staticfiles %} 以保持您的代码干燥(不要重复自己)。我还对您的代码进行了一些语法更改;非常轻微。在 urls 中,当您的设置设置为 DEBUG = True 时,Django 将加载您的静态图像。当您投入生产并DEBUG = False 时,Django 不再提供静态文件。那是你的服务器的责任。

      希望对你有帮助。

      如果还是不行,可以发一下STATIC_URLSTATIC_ROOT吗?

      【讨论】:

      • STATIC_URL = '/static/' urls.py 显示名称错误。我应该在 urls.py 中导入一些东西吗?
      • 名称“设置”未定义
      • @SahalSajjad 在顶部,导入这个from django.conf import settings
      猜你喜欢
      • 2014-10-29
      • 2018-12-13
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      • 2012-12-11
      • 2021-10-12
      • 2013-07-01
      • 2019-04-12
      相关资源
      最近更新 更多