【问题标题】:Django: can't load static files from template on DigitalOcean DropletDjango:无法从 DigitalOcean Droplet 上的模板加载静态文件
【发布时间】:2015-07-31 22:04:32
【问题描述】:

我在 DigitalOcean 机器上运行的 Django 应用中从模板加载静态文件时遇到问题。

这是我的 Nginx 配置文件(etc/nginx/sites-available/django):

# your Django project's static files - amend as required
location /static {
    alias /home/workspace/app-toscana/django/djangoapptoscana/djangoapptoscana/static;
}

这是我的 settings.py 文件:

STATIC_PATH = os.path.join(BASE_DIR,'static')

STATIC_URL = '/static/' # You may find this is already defined as such.

STATICFILES_DIRS = (
    STATIC_PATH, )

这是一个模板文件调用的例子:

{% load staticfiles %}
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>AdminLTE 2 | Dashboard</title>
    <meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'>
    <!-- Bootstrap 3.3.4 -->
    <link href="{% static 'bootstrap/css/bootstrap.min.css' %}" rel="stylesheet" type="text/css" />

我尝试了不同的解决方案,尤其是更改了 settings.py 文件,但没有任何结果。 也许在我找不到的 Nginx 和 gunicorn 配置中存在任何问题。

【问题讨论】:

  • 尝试找出错误所在的配置部分。在模板文件中创建的链接是否符合您的预期?将文件放在/home/workspace/app-toscana/django/djangoapptoscana/djangoapptoscana/static 中(如果还没有,请尝试在/static/myfile.txt 访问它。检查Nginx 日志的内容。重新阅读static files deployment docs。特别是,您似乎没有已设置STATIC_ROOT 或运行collectstatic。祝你好运:)
  • 设置了 STATIC_ROOT。使用命令python manage.py runserver localhost:9000 手动运行服务器我在服务器外壳上看不到任何特定问题,但是如果我尝试使用公共 IP 服务器地址访问该页面,我无法加载收到 404 错误的静态文件(在静态文件上)。例如。 GET http://188.166.72.87/static/bootstrap/css/bootstrap.min.css =&gt; STATUS 404
  • 我也执行了collecstatic 命令,没有任何结果。
  • runserver 和 nginx 太不一样了。 STATIC_ROOT 是如何定义的,您的问题中没有这样的代码。另外,请尝试从您的实时设置中删除STATICFILES_DIRS,看看效果如何,然后我会解释。
  • 这是我的静态文件配置(来自 settings.py)STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder' ) STATIC_ROOT = '/home/workspace/app-toscana/django/djangoapptoscana/static/' STATIC_URL = '/static/' 没有 STATIC_PATHSTATIC_DIR 变量。

标签: django nginx django-templates digital-ocean django-staticfiles


【解决方案1】:

希望我找到了解决此问题的方法。这是一个许可问题。在我的 DigitalOcean 机器上,我将 django 应用程序目录的所有者设置为 root:root

chown -R root:root /home/django/djangoapptoscana/dashboard

以及静态文件目录的所有者为 django:django

chown -R django:django /home/django/djangoapptoscana/djangoapptoscana/static

【讨论】:

    猜你喜欢
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 2014-07-12
    • 2018-03-19
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    相关资源
    最近更新 更多