当DEBUG = True时,Django不提供每个静态文件

时间:2017-07-10 08:29:49

标签: django

更新

发现问题,原因尚不清楚。

使用docker在Mac和PC上运行代码真的很奇怪。但是当我将代码上传到云服务器时,它有一些静态文件有404个,另外有200个。

bootstrap.min.css   200 stylesheet  (index) 119 KB  50 ms
dataTables.bootstrap.min.css    404 stylesheet  (index) 126 B   164 ms
buttons.bootstrap.min.css   404 stylesheet  (index) 126 B   165 ms

这是我的settings.py

...

DEBUG = True # still on develop

...

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static")
]

...

templateshost ip可能有问题:

模板

我在base.html中放了一些基本的css / js。 这个bootstrap css工作正常。

<!DOCTYPE html>
<html lang="en">
  <head>
    {% block head_meta %}
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    {% endblock head_meta %}

    <title>{% block head_title %}{% endblock head_title %}</title>

    <!-- Bootstrap core CSS -->
    <link href="/static/vendors/bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet">

    {% block head_link %}
    <!-- HERE I PUT EXTENDED CSS/JS -->
    {% endblock head_link %}

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  ...
</html>

当我在some.html中使用时,我扩展了一些css / js。 这些Datatables css / js得到了404。

{% extends "base.html" %}

    {% block head_title %}Search Results{% endblock head_title %}

    {% block head_link %}
    <!-- Datatables -->
    <link href="/static/vendors/Datatables-1.10.15/media/css/dataTables.bootstrap.min.css" rel="stylesheet">
    <link href="/static/vendors/Datatables-1.10.15/extensions/Buttons/css/buttons.bootstrap.min.css" rel="stylesheet">
    {% endblock head_link %}

主机IP

我认为,我的Mac,PC与云服务器之间的唯一变化是主机IP。

在Mac和PC上,主机IP为localhost

在云服务器上,主机IP是某个IP,如1.1.1.1

谢谢!

Django版本:1.11

实际上,在我的PC和云服务器上,我都使用了搭载ubuntu 16.04的docker。所以,有相同的环境。我使用python3 runserver 0.0.0.0:8000来测试/调试我的网站。但正如我的问题所描述的那样,他们得到的结果不同。

最后,

抱歉!我发现了我的问题,正如@Alasdair所说的那样capitalisation problem。但不适用于Mac和PC / Server。在Windows和Ubuntu上使用相同的docker容器(Ubuntu 16.04)。我无法找到它,因为它在Windows上运行正常。我仍然不知道为什么。

全部谢谢!

1 个答案:

答案 0 :(得分:0)

您是否正在使用nginx来反转django应用程序的代理?我想,对静态文件的Http请求独立于django请求。如果您没有分割两个不同的请求,例如:

Time::Piece

您对静态文件的请求将通过django,然后请求的路径与urls.py中定义的url模式不匹配,最后得到404.