Django STATIC_URL不起作用,不提供文件

时间:2015-08-07 09:14:40

标签: python django

我在http://example.com有一个公司wordpress博客,Django应用程序已在http://example.com/web成功部署。

我的应用程序是一个简单的应用程序(我还在学习Django),我希望有一个“欢迎”页面(以及其他页面)的背景。

我在文档中读到我需要使用STATIC_URL - 所以这就是我拥有的和我做的:

  1. 我的项目结构:
  2. enter image description here

    1. settings.py文件中与提供静态文件相关的内容:
    2. STATIC_URL = '/web/static/'
      SETTINGS_PATH = os.path.dirname(__file__)
      PROJECT_PATH = os.path.join(SETTINGS_PATH, os.pardir)
      STATICFILES_DIRS = (os.path.join(PROJECT_PATH, "static"), )
      USE_X_FORWARDED_HOST = True
      FORCE_SCRIPT_NAME = '/web'
      SUB_SITE = "/web"
      

      这是模板文件base.html,其中我想将back.jpg用作网页背景图片:

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html>
          <head>
              <title>Simple Site
              {% block title %}{% endblock %}</title>
          </head>
          <body background="/static/back.jpg" text="white"/>
      
                      <div align="center">
      
              <h1>{% block head %}{% endblock %}</h1>
              {% block content %}{% endblock %}
      
                      </div>
      
          </body>
      </html>
      

      然而,我看不到图像。这是一个生产(非开发)应用程序。我怎么解决这个问题?

2 个答案:

答案 0 :(得分:3)

您的背景正在寻找背景图片的错误位置,您应该使用static template tag

<body background="{% static 'back.jpg' %}" text="white"/>    

要使用此功能,您需要加载静态(最好是模板顶部)

{% load static %}

答案 1 :(得分:2)

使用任何网络服务器(Apache或Nginx),您需要将它们配置为服务静态文件。

<强> Nginx的

查看nginx资源的serving static content部分。

location /web/static {
    root /path/to/example.com/static/;
}

<强>的Apache

Django有good documentation部署Apache和mod_wsgi,包括如何serve static files

Alias /web/static/ /path/to/example.com/static/

<Directory /path/to/mysite.com/static>
Require all granted
</Directory>