2013-02-22 82 views
7

我有一个Django项目看起来像:如何让PyCharm识别静态文件?

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

在index.html的我(我可以看到呈现图像):settings.py的

{% load staticfiles %} 

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

相关部分:

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可以找到它们,但它仍然不断出现。如何解决这个想法?

+0

STATIC_ROOT是如何在settings.py中定义的? – yole 2013-02-22 12:54:42

+0

@yole我已经添加了相关部分的问题。 – 2013-02-22 13:00:15

+0

@yole与'STATIC_ROOT = normpath(join(SITE_ROOT,'assets'))'同样的问题''。 PyCharm有一些手动设置静态目录的黑客? PyCharm EAP 129.782,django 1.5.1 – nk9 2013-07-02 08:52:10

回答

8

您需要进行以下设置,告诉PyCharm在哪里可以找到项目根:

enter image description here

Django settings to set (image)

您还可以使用{{STATIC_URL}} /路径/到/文件,它通过pycharm工作不同

这有效奇迹。虽然pycharm有点奇怪。

8
STATICFILES_DIRS = (
    'static', 
) 

上面假设你的静态目录在你的根目录下被称为static。现在需要做os.path.join。我试过并测试过这个。

+2

问题在于OP内部有'static'目录和应用程序,可能还有更多的应用程序。这对于Django中的静态文件来说是完全有效的模式 - 这是第二个默认查找器所做的! https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-STATICFILES_FINDERS PyCharm应该真的解析这个,至少对于默认设置IMO来说。 cc @KitSunde – frnhr 2015-05-02 12:50:39