代码之家  ›  专栏  ›  技术社区  ›  Sahal Sajjad

Django,无法加载图像,但已加载css

  •  0
  • Sahal Sajjad  · 技术社区  · 9 年前

    我能够根据djangoproject提供的教程加载css文件,但图像无法加载。 以下是文件结构: appname/static/mess/img/burger.jpg

    这是登录名。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 如果你需要更多信息,请告诉我。提前感谢。

    3 回复  |  直到 9 年前
        1
  •  1
  •   Sahal Sajjad    9 年前

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

        2
  •  0
  •   Pierangelo Orizio    9 年前

    在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
  •  0
  •   jape    9 年前

    这里有一些改变。您可以复制并粘贴模板的以下代码,以及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 %} 在顶部保持代码干燥(不要重复自己)。我还对您的代码进行了一些语法更改;非常轻微。在URL中,当您的设置设置为 DEBUG = True ,Django将加载静态图像。当你投入生产和 DEBUG = False ,Django不再提供静态文件。这是服务器的责任。

    我希望这有帮助。

    如果它仍然不起作用,你能把你的 STATIC_URL STATIC_ROOT ?

    推荐文章