【发布时间】:2020-09-23 21:46:48
【问题描述】:
我正在使用最新版本的 Pycharm,2020.2.2 和 django 3.1。
在我的项目中,我删除了默认的settings.py,并创建了一个名为settings的目录,所以整个项目根目录如下:
tsetmc
├── asgi.py
├── celery.py
├── context_processors.py
├── __init__.py
├── settings
│ ├── base.py
│ ├── __init__.py
│ ├── local.py
├── urls.py
├── views.py
└── wsgi.py
在base.py 中,我将静态文件设置定义为:
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent.parent
...
STATIC_URL = '/static/'
STATICFILES_DIRS = [
BASE_DIR / 'assets/'
]
STATIC_ROOT = BASE_DIR / 'staticfiles/'
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media/'
在浏览器中一切正常并且使用{% static %}标签成功加载了静态文件;但是,Pycharm 无法解析模板中的任何静态文件。
我启用了 Django 支持,在 Pycharm 设置中相应地设置了 Django project root 和 settings,并将 Template Language 设置为 Django;但它并没有解决问题。
经过反复试验,我找到了一个奇怪的解决方案;如果我使用import os 和os.path.join() 来定位静态路径,而不是from pathlib import Path 和/,Pycharm 可以毫无问题地解析静态文件。
所以当我将base.py 更改为如下所示时:
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'assets')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles/')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
(使缓存失效后,不改变任何其他配置)
Pycahrm 可以完全解析静态文件。
我在这里遗漏了什么? 使用Path 处理静态文件有什么问题吗?还是问题出在 Pycharm 本身?
感谢您的帮助。
【问题讨论】:
标签: django pycharm django-staticfiles