【问题标题】:Django 1.11 - Static files not served - PythonAnywhereDjango 1.11 - 未提供静态文件 - PythonAnywhere
【发布时间】:2018-07-21 18:13:02
【问题描述】:

我正在将 django 1.11 应用程序部署到 PythonAnywhere 环境。

设置文件已将“django.contrib.staticfiles”添加到 INSTALLED_APPS 和静态配置中

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static_col')

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

静态文件夹的文件夹结构:

├── css
├── fonts
├── img
├── jquery.templates
└── js
    └── jquery

在本地开发应用程序时,我在执行 manage.py runserver 时使用“/static/jquery.templates/jquery.templates.js”没有问题,但它在我没有提供任何静态文件的部署中不起作用.

我执行了manage.py collectstatic,它可以正常工作,但它会将文件夹“jquery.templates”移动到 js one:

static_col/
├── admin
    ...
├── css
├── fonts
├── img
└── js
    ├── jquery
    └── jquery.templates

问题

显然,提供了其他静态文件,但问题是找不到链接 /static/js/jquery.templates/jquery.templates.js。显然 /static/jquery.templates/jquery.templates.js 链接都不起作用。我不知道如何解决这个问题。

使用 Django 提供静态文件很麻烦,我还没有找到这方面的工作指南。

谢谢

【问题讨论】:

    标签: django web-deployment django-staticfiles pythonanywhere


    【解决方案1】:

    我知道我在部署我的第一个项目时遇到了类似的问题。我发现解决方案是在我的应用程序静态文件夹中放置一个与应用程序名称相同的文件夹。这可以防止我的静态文件出现很多奇怪的名称冲突和意外位置。

    应用结构

    django_project
    ├─ static_col
    ├─ app1
    │  └─ static
    │     └─ app1
    │        ├─ js
    │        │  ├─ jquery1.js
    │        │  └─ functions1.js
    │        └─ css
    │           └─ styles1.css
    └─ app2
       └─ static
          └─ app2
             ├─ js
             │  └─ functions2.js
             └─ css
                └─ styles2.css
    

    manage.py collectstatic之后

    django_project
    └─ static_col
       ├─ app1
       │  ├─ js
       │  │  ├─ jquery1.js
       │  │  └─ functions1.js
       │  └─ css
       │     └─ styles1.css
       └─ app2
          ├─ js
          │  └─ functions2.js
          └─ css
             └─ styles2.css
    

    然后确保在您的模板中使用{% static 'app1/js/functions1.js' %}(注意添加了app1)来引用您的文件。我发现这纠正了collectstatic 的大部分问题。

    最后,您需要确保您的服务器/主机实际上正在为静态文件提供服务。您提到了 PythonAnywhere,所以我会查看这篇博文 https://blog.pythonanywhere.com/60/ 并仔细检查您是否确实设置了正确的目录来提供静态文件(上例中的 django_project/static_col)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      • 2015-10-30
      • 2014-02-26
      • 2014-12-22
      • 2021-07-08
      • 2012-12-16
      相关资源
      最近更新 更多