未加载生产中的Django静态文件

时间:2018-07-28 20:19:04

标签: django django-staticfiles

我的Django应用程序中的静态文件有问题。

我使用Django REST Framework和Angular 6创建了一个简单的博客应用程序。它在我的本地开发环境中运行良好,但是在将其部署到生产环境中存在问题。问题是,该应用程序正在加载(我知道这是因为根路由是到/ app的重定向,并且我已正确重定向),但是没有加载任何静态文件。

这是我与静态文件相关的配置的一部分:

<table>
  <tbody>
    <tr>
      <td>
        <select class="solflow">
          <option>Select an Option</option>
          <option>Option 1</option>
          <option>Option 2</option>
        </select>
        <select class="solflow">
          <option>Select an Option</option>
          <option>Option 1</option>
          <option>Option 2</option>
        </select>
    </tr>
  </tbody>
  <tfoot>
    <tr>
      <td>
        <button class="button add" type="button">Add</button>
        <button class="button remove" type="button">Remove</button>
      </td>
    </tr>
  </tfoot>
</table>
<script>
  function tableClickHandler(e) {
    if (e.target.classList.contains('add')) {
        let tbody = this.querySelector('tbody');
        let row = tbody.querySelector('tr');
        tbody.appendChild( row.cloneNode(true) );
    }
    if (e.target.classList.contains('remove')) {
        var tbody = this.querySelector('tbody');
        var row = tbody.querySelectorAll('tr');
        if (row.length > 1) {
          tbody.removeChild(row[row.length-1]);
        }
    }
  }

  function tableChangeHandler(e) {
    if (e.target.classList.contains('solflow')) {
      let solflows = this.querySelectorAll('.solflow');
      let solflow = e.target;
      let index = -1;
      solflows.forEach(function(el, ind){
        if (el === solflow) { index = ind }
      });
      console.log(index, solflow.value);
    }
  }

  document.querySelector('table').addEventListener('click', tableClickHandler);
  document.querySelector('table').addEventListener('change', tableChangeHandler);
</script>

路径是正确的,我确定对它们进行了三重检查。这是在Django应用程序中配置的路由:

STATIC_URL = '/static/'
BASE_DIR = os.path.join(
    os.path.dirname(os.path.dirname(__file__)), '..', '..', '..'
)
STATIC_ROOT = os.path.join(BASE_DIR, 'app', 'static')
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'frontend'),
]

INSTALLED_APPS = [
    ...
    'django.contrib.staticfiles'
    ...
]

我能够无任何错误地运行urlpatterns = [ url('^api/', include(api_patterns)), url('^admin/', admin.site.urls), url('^app/', serve, kwargs={'path': 'index.html'}), url('^$', HomepageView.as_view(), name='homepage-redirection'), ] ,并且所有静态文件都已正确复制到静态目录中。管理应用程序的静态文件也未正确加载。这是我项目中目录的粗略结构:

manage.py collectstatic

应用程序服务器是带有Phusion Passenger的Nginx(这是由我租用服务器的公司配置的)。我真的不知道我还能在这里添加什么。有谁知道这里有什么问题吗?可能有些暗示是API端点不可访问。我可以访问管理应用程序,但不能访问API(两者都在同一urls文件中配置)。

0 个答案:

没有答案