Django静态文件获取404

时间:2018-06-26 15:51:10

标签: django static

您好,感谢您的提前帮助。我知道这个问题已经在其他地方提出并回答了,但是这些回答都没有用。

我是python和django的新手,并且继承了一个小型webapp。我的计算机上有一个开发环境,代码几乎没有变化,唯一的变化是指向我的本地mySQL服务器的数据库名称和密码。

但是,当我运行该应用程序时,除静态文件外,其他所有东西都可以正常工作。尝试检索静态文件时,控制台中出现404错误,而静态中的js方法未定义。

BASE_PATH,STATIC_URL,STATIC_ROOT,STATICFILES_DIR,STATICFILES_FINDERS与当前正在工作的生产代码均未更改,并且据我的初学者所知,根据文档和对该问题的多个答案进行了正确配置。

我在计算机上安装的内容可能与这有所不同吗?为什么生产版本和我的本地副本之间会有什么不同?要运行此功能,我需要运行某些东西吗?

settings.py中的某些设置:

<p id="demo"></p>

包含在模板中

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

INSTALLED_APPS = [
    'biogen.apps.BiogenConfig',
    'msm.apps.MsmConfig',
    'tracker.apps.TrackerConfig',
    'accounts.apps.AccountsConfig',
    'process_manager.apps.ProcessManagerConfig',
    'process.apps.ProcessConfig',
    'pfd.apps.PfdConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'djangobower',
    'rest_framework',
    'crispy_forms',
    'django_summernote'
]

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

STATICFILES_DIR = [
    os.path.join(BASE_DIR, 'components/static'),
]

STATICFILES_FINDERS = [
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'djangobower.finders.BowerFinder',
]

再次感谢...

3 个答案:

答案 0 :(得分:0)

提供类似这样的内容:

考虑在项目根目录static_files中将其作为静态文件的源,将static作为静态文件的目的地-您最初将其放置并编辑在static_files(或其他任何您拥有的文件)中:< / p>

STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static_files'),
                    os.path.join(BASE_DIR, 'static_files/js'),
                    os.path.join(BASE_DIR, 'static_files/html'),)
STATIC_ROOT = os.path.join(BASE_DIR, 'static', )
STATIC_URL = '/static/'

请注意,它是STATICFILES_DIRS,而不是STATICFILES_DIR

然后运行

python manage.py collectstatic 

收集从static_filesstatic的静态文件

答案 1 :(得分:0)

尝试运行

python manage.py collectstatic

答案 2 :(得分:0)

原来,我需要从Bower加载所有静态文件。所有这些文件都存在于生产中,但由于某种原因不在开发中!