2016-10-12 66 views
-1

我是Django和Python中的新玩家。我想从项目级静态文件夹加载静态文件。问题是我不能,但我仍然可以加载应用程序的静态。 这是我的项目的结构:无法在视图中加载Django静态文件

Yaas 
    __init__.py 
    settings.py 
    urls.py 
    wsgi.py 
    templates 
     base.html 
    static 
     style.css 
    auction 
     templates 
      auction 
       index.html 
     static 
      auction 
       style.css 
     __init__.py 
     apps.py 
     models.py 
     urls.py 
     views.py 

的事情是它的工作原理与拍卖的静态文件,这样在base.html文件:

{% load static %} 
<link rel="stylesheet" type="text/css" href="{% static 'auction/style.css' %}" /> 

但它与项目静态文件返回404 :

{% load static %} 
<link rel="stylesheet" type="text/css" href="{% static 'style.css' %}" /> 

settings.py

STATIC_URL = "/static/" 
STATIC_ROOT = os.path.join(BASE_DIR, "static") 

我在Django上尝试了其他解决方案和文档,但它仍然无法工作。我正在使用Django 1.10。

+1

那些不是由Django渲染的,所以标签将不起作用 –

回答

0

我加入下面的步骤进行这项工作:

STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")] 

docs(后4点):

你的项目很可能也静态资产不依赖于 一个特定的应用。除了在您的 应用程序中使用静态/目录外,您还可以在您的 设置文件中定义一个目录列表(STATICFILES_DIRS),其中Django也将查找静态文件。

请注意STATIC_ROOT目录,其中Django会输出所有收集到的每个<app>/staticSTATICFILES_DIRS目录中找到静态文件,必须是不同的。

希望有帮助!

+0

它的工作原理!谢谢。所以就像STATIC_ROOT没有在新版本的Django中使用来包含项目静态文件了? –

+0

看起来像STATIC_ROOT用于指示Django(使用collectstatic命令)收集(输出)静态文件的位置。检查文档,我认为这不应该被删除,但它应该与STATICFILES_DIRS目录不同。如果它们都相同,则Django不能用所有收集的静态文件替换输出STATIC_ROOT目录,因为该目录也具有输入静态文件。我会调整我的答案 – jga