我该如何让PyCharm识别静态文件?

8

我有一个类似如下的Django项目:

/.idea
/clients
     /app
         /static
             coin.png
         /templates
             index.html
         __init__.py
         urls.py
     /clients
         settings.py
     manage.py

在index.html中,我有以下代码(可以在渲染时看到图像):
{% load staticfiles %}

<img src="{% static 'coin.png' %}">

settings.py 相关部分:

STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static/')
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(os.path.dirname(__file__), '../static/'),
)

INSTALLED_APPS = (
    'django.contrib.staticfiles',
)

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.static',
)

在项目结构中,我已经添加了/clients,因为Django项目的根目录比仓库的根目录高一级。然而,在这个项目中,所有我的{% static %}使用都被突出显示为不存在,尽管Django可以找到它们。有什么解决方法吗?


您的settings.py文件中如何定义STATIC_ROOT? - yole
@yole 我已经在问题中添加了相关部分。 - Kit Sunde
@yole 对于 STATIC_ROOT = normpath(join(SITE_ROOT, 'assets')) 也遇到了同样的问题。PyCharm是否有一些手动设置静态目录的技巧?PyCharm EAP 129.782,django 1.5.1。 - b1_
@b1 http://youtrack.jetbrains.com/issue/PY-10194 - yole
2个回答

12
STATICFILES_DIRS = (
    'static',
)

以上假设您的静态目录在根目录下称为 static。现在需要进行os.path.join。我已经尝试并测试过这个方法。


3
问题在于 OP 的应用程序中有一个名为 static 的目录,而且可能还有其他几个应用程序中也有。这是 Django 中静态文件的一种完全有效的模式——这就是第二个默认查找器所做的事情!https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-STATICFILES_FINDERS 在我看来,PyCharm 应该至少解析这个默认设置。@KitSunde - frnhr
这对我有用。谢谢! - Naeem Khan

12

您需要设置以下设置,告诉PyCharm项目根目录的位置:

输入图片描述

需要设置的Django设置(图片)

您还可以使用 {{STATIC_URL}}/path/to/files,在PyCharm中起作用方式不同。

这非常奇怪,但对PyCharm来说却有奇效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接