Django 1.11 - 不提供静态文件 - PythonAnywhere
Django 1.11 - Static files not served - PythonAnywhere
我正在将 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
在本地开发应用程序时,我使用“/static/jquery.templates/jquery.templates.js”在执行 manage.py runserver 时没有问题,但在我没有得到任何静态文件的部署。
我执行了 manage.py collectstatic
没有错误,但是它移动了文件夹 "jquery.templates" 到 js one:
static_col/
├── admin
...
├── css
├── fonts
├── img
└── js
├── jquery
└── jquery.templates
问题
显然,其他静态文件已提供,但问题是找不到 link /static/js/jquery.templates/jquery.templates.js。显然 /static/jquery.templates/jquery.templates.js link 都不行。我不知道如何处理这个问题。
使用 Django 提供静态文件是一件很痛苦的事情,我还没有找到这方面的工作指南。
谢谢
我知道我 运行 在部署我的第一个项目时遇到了类似的问题。我发现解决方案是在我的应用程序静态文件夹中放置一个与应用程序同名的文件夹。这避免了很多奇怪的名称冲突和我的静态文件的意外位置。
应用结构
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
.
的大部分问题
最后,您需要确保 server/host 确实在提供静态文件。你提到了 PythonAnywhere,所以我会看看这个博客 post https://blog.pythonanywhere.com/60/ 并仔细检查你是否真的设置了正确的目录来提供你的静态文件(上例中的 django_project/static_col
).
我正在将 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
在本地开发应用程序时,我使用“/static/jquery.templates/jquery.templates.js”在执行 manage.py runserver 时没有问题,但在我没有得到任何静态文件的部署。
我执行了 manage.py collectstatic
没有错误,但是它移动了文件夹 "jquery.templates" 到 js one:
static_col/
├── admin
...
├── css
├── fonts
├── img
└── js
├── jquery
└── jquery.templates
问题
显然,其他静态文件已提供,但问题是找不到 link /static/js/jquery.templates/jquery.templates.js。显然 /static/jquery.templates/jquery.templates.js link 都不行。我不知道如何处理这个问题。
使用 Django 提供静态文件是一件很痛苦的事情,我还没有找到这方面的工作指南。
谢谢
我知道我 运行 在部署我的第一个项目时遇到了类似的问题。我发现解决方案是在我的应用程序静态文件夹中放置一个与应用程序同名的文件夹。这避免了很多奇怪的名称冲突和我的静态文件的意外位置。
应用结构
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
.
最后,您需要确保 server/host 确实在提供静态文件。你提到了 PythonAnywhere,所以我会看看这个博客 post https://blog.pythonanywhere.com/60/ 并仔细检查你是否真的设置了正确的目录来提供你的静态文件(上例中的 django_project/static_col
).