Django - 找不到404静态文件

时间:2017-05-25 19:05:45

标签: python django

我知道有关这些问题的一小部分,但没有人帮助我。

我无法访问我的静态文件进行部署,我已将设置文件转储到base和production中,并将它们放在settings.py原始文件的文件夹中。

我已经做了所有必要的事情,但它似乎仍然无法正常工作,我无法为我的生活做好准备。

我已经尝试过多次修改路径而没有改变。

也许我错过了一些显而易见的东西,其他人也可以看到它。

  1. VENV
  2. - 项目
  3. ---- app1
  4. ------静态文件夹
  5. ---- wsgi文件夹
  6. ------ settings_old.py
  7. ------新设置文件夹
  8. --------- base.py
  9. --------- production.py
  10. base.py

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    INSTALLED_APPS = ['django.contrib.staticfiles',]
    
    STATIC_URL = '/static/'
    
    STATIC_DIRS = (os.path.join(BASE_DIR, 'static'),)
    STATIC_ROOT = os.path.join(BASE_DIR, 'static_r')
    
    STATICFILES_FINDERS = ( 
        'django.contrib.staticfiles.finders.FileSystemFinder',
        'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    )
    

    我尝试过几个不同的事情,例如从BASE_DIR更改为直接转到索引中的静态文件的新PROD_DIR。

    PROD_ROOT = os.path.dirname(os.path.abspath('__file__' ))
    PROD_ROOT= os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath('__file__' ))))
    PROD_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
    

    似乎没有任何效果。

    更新:

    正如其他我尝试过的collectstatic所建议的那样,找到了文件夹env / project / static_r,我得到了

      

    ' 0文件复制到static_r'。

    此外,我也按照建议打印出base_dir和prod_dir并得到以下内容

      

    " prod是/ user / venv / project" &安培; " base是/ user / venv / project / wsgi-folder"

    p.s这是在我将prod_dir编辑为 -

    之后
    PROD_ROOT = os.path.dirname(os.path.abspath('__file__' ))
    

3 个答案:

答案 0 :(得分:1)

我不太确定,但你确定它是STATIC_DIRS而不是STATICFILES_DIRS吗? ' - '

答案 1 :(得分:0)

根据您的设置,您的静态文件应位于/ project / static /中,而不是单个应用中。

您还需要按照documentation

中的说明加载静态文件
{% load static %}
<img src="{% static "my_app/example.jpg" %}" alt="My image"/>

答案 2 :(得分:0)

您可以随时使用的方法来打印它。

所以在你的设置中

print BASE_DIR, STATIC_DIRS, STATIC_ROOT

你会看到你的错误在哪里。

在我看来,你将静态文件夹放在应用程序中,而不是放在项目中,因为collectstatic会将所有静态文件放在一个目录中,无论