Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用DEBUG=False将我的Django网站部署到Heroku不会';行不通_Python_Django_Heroku_Http Status Code 500 - Fatal编程技术网

Python 使用DEBUG=False将我的Django网站部署到Heroku不会';行不通

Python 使用DEBUG=False将我的Django网站部署到Heroku不会';行不通,python,django,heroku,http-status-code-500,Python,Django,Heroku,Http Status Code 500,当在localhost或heroku上部署django且DEBUG=False时,它会抛出一个错误 C:\Users\krish\Envs\PRREMIA\lib\site-packages\whitenoise\base.py:105: UserWarning: No directory at: c:\Users\krish\Documents\python\PRREMIA\staticfiles\ warnings.warn(u'No directory at: {}'.format(r

当在localhost或heroku上部署django且DEBUG=False时,它会抛出一个错误

C:\Users\krish\Envs\PRREMIA\lib\site-packages\whitenoise\base.py:105: UserWarning: No directory at: c:\Users\krish\Documents\python\PRREMIA\staticfiles\
  warnings.warn(u'No directory at: {}'.format(root))
[28/Jul/2019 16:05:43] "GET / HTTP/1.1" 500 27
当DEBUG=True时,它工作正常

静态设置

STATIC\u ROOT=os.path.join(BASE\u DIR,'staticfiles')
静态URL='/STATIC/'
静态文件\u目录=(
join(BASE_DIR,'static'),
)

为什么??我该如何停下来解决这个问题

注意:
中间件中删除whitenose中间件
并更改
静态文件\u存储

#STATICFILES_STORAGE='whitenoise.STORAGE.CompressedManifestStaticFilesStorage'
STATICFILES\u STORAGE='django.contrib.STATICFILES.STORAGE.StaticFilesStorage'

已删除500错误,但仍然找不到staticfiles。

您的staticfiles\u DIRS设置不正确:

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
这是指项目根目录中名为
static
的目录,但没有这样的目录

看起来您的静态文件位于
业务
应用程序中,在这种情况下,它们将自动拾取,这样您就可以完全删除
静态文件\u DIRS
设置。

配置Django/Create React App/Whitenoise以运行git deploy to Heroku应用程序,调试=False 首先感谢Whitenoise开发者,让这一切成为可能

在您的settings.py中

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'staticfiles')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },

    },
]

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'build/static'),     os.path.join(BASE_DIR, 'build')
]

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

STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'
在views.py中创建index.html的模板视图

from django.views.generic import TemplateView
from django.views.decorators.cache import never_cache

# Serve Single Page Application
index = never_cache(TemplateView.as_view(template_name='index.html'))
在URL.py中,向新视图添加路径

from django.urls import path, include, re_path
from .views import index

urlpatterns += [
    re_path('.*', index)
]
在推送到heroku之前,先运行
npm运行build
,然后运行
python manage.py collectstatic
。这将把应用程序构建到构建文件夹中,然后将这些静态构建文件收集到项目根目录中的staticfiles文件夹中

如果
python manage.py collectstatic
失败,首先在项目根目录中创建一个名为staticfiles的空目录

index-re_-path视图的要点是,在以“/login”这样的路径重新加载页面时,始终将应用程序指向index.html

git add .
git commit -m "blah"
git push heroku master
这对我来说很有效,希望在将来对人们有所帮助


如果这不起作用,我的建议是在本地运行
python manage.py runserver
,然后处理构建文件夹、staticfiles文件夹和settings.py,以了解发生了什么。我还建议登录以查找错误,尽管我自己没有这样做

Whitenoise处理静态文件。所以显示你的静态设置。Heroku不应该显示任何带有
C:\
的内容。这是Windows风格的路径,Heroku不运行Windows。你在你的设置中包括绝对路径吗?@Chris没有,我一直在使用前斜杠。(老实说,直到几个月前我才知道Windows使用了反斜杠)。您还可以查看my,您应该检查您是否可以在本地运行
python manage.py collectstatic
,并且没有任何错误。如果Heroku在编译项目时无法成功运行该命令,静态文件将无法工作。@12944qwerty,这不仅仅是反斜杠。这是
C:
本身,以及对指向本地虚拟环境的Windows路径的引用:
C:\Users\krish\Envs\PRREMIA
。代码中的某些内容引用了本地路径。您刚刚将问题改写为其他内容。这不是一个好主意,因为现在没有任何评论或答案对将来研究这一问题的人有意义。好吧,但我只是尝试了你的建议,不幸的是,它不起作用(