这是我的第一个Python
项目,我正尝试将其部署到Heroku
。我已经看了很多与此有关的问题,但还没有找到有关我的确切问题的解决方案。我收到以下错误。
Exception Type: ProgrammingError
Exception Value: relation "articles_cover" does not exist
LINE 1: ..."profession", "articles_cover"."description" FROM "articles_...
我怀疑这与我在文件结构中处理视图和模型的方式有关。我的模型位于应用程序内部,而该应用程序位于整个项目文件夹中,并且我试图在应用程序的某些视图中外部访问模型。这在本地工作得很好。这是结构。
├───articles
│ ├───migrations
│ │ └───__pycache__
│ ├───templates
│ │ └───articles(<==template tags applies to various elements in files)
│ |───__pycache__
| |____models.py (<==models here)
├───assets
├───MyProject
│ |───__pycache__
| |___views.py (<==models applied here)
├───media
└───templates (<==template tags applied to various elements in files)
所以我当时认为这是与将模型导入views.py有关的参考问题。再次,以下内容似乎可以在本地运行,并且在遍历Django的文档后,我还没有找到另一种方法来执行以下操作。
views.py
from django.http import HttpResponse
from django.shortcuts import render
from articles.models import Article, Cover, Novel, Event, Podcast, Novella, Short
def homepage(request):
covers = Cover.objects.all()
novels = Novel.objects.all()
events = Event.objects.all()
novellas = Novella.objects.all()
shorts = Short.objects.all()
return render(request, 'homepage.html', {
'covers': covers, 'novels': novels, 'events': events,
'novellas': novellas, 'shorts': shorts})
def podcast(request):
podcasts = Podcast.objects.all()
return render(request, 'podcast.html', {'podcasts': podcasts})
我认为尝试将其部署到Heroku
时缺少某些内容。我按照这封信的here指示进行操作,因此不确定下一步如何做。
我知道Django使用的SQlite
在某些情况下可能会有些无聊。我还需要使用其他东西吗?如果是这样,该怎么办?这仅仅是一个进口问题吗?预先感谢。
更新:我遵循了所有人的建议,并找到了Posgress文档。我通过pipenv安装了它,并在我的settings.py文件中添加了以下几行。
db_from_env = dj_database_url.config()
DATABASES['default'].update(db_from_env)
我尝试了不同的方法将此方法集成到原始DATABASES变量的语法中,但是它们都产生相同的结果。 “应用程序错误”。当我检查日志时,发现以下内容。
NameError:名称'DATABASES'未定义
我觉得我错过了Heroku和Django文档只是假设我已经完成的步骤。我只是想弄清楚它是什么。
答案:找到了很多资源Here。跟着它一步一步解决了问题。感谢那些回答。你们带领我朝着正确的方向前进。否则我仍然会为此而苦苦挣扎。
答案 0 :(得分:1)
您无法在Heroku上运行sqlite。 sqlite db是文件系统上的文件,因此不会在dynos之间共享,并且不会在重新启动后持久存在。迁移将不起作用,因为它们总是会在单独的进程中进行,因此会在db文件的单独副本上进行。
使用适当的数据库附件,即Postgres。
答案 1 :(得分:1)
在Heroku上部署到生产环境时,建议使用PostgresSQL。在Heroku上设置Postgres并将其连接到Django应用程序很简单
Heroku有一些很棒的文档,介绍了如何启动和运行您的应用程序+数据库。
https://devcenter.heroku.com/articles/django-app-configuration