Ben*_*ick 3 database sqlite django heroku django-models
我正在学习 Django,但我遇到了一个问题,我的数据库没有正确传输(或者它正在正确传输并且我遗漏了一些东西,这就是我认为正在发生的事情)。
我有一个Django模型Link中models.py
class Link(models.Model):
title = models.CharField(max_length=100)
alt = models.CharField(max_length=100)
dest = models.CharField(max_length=100)
image = models.FilePathField(path='static/misc/link_in_bio/img/')
def __str__(self):
title = self.title + ' Link'
return self.title
class Meta:
ordering = ('title', )
Run Code Online (Sandbox Code Playgroud)
然后我制作了这个模型的实例并确认它们被正确输入到数据库中。然后在页面的 html 中引用它们,如下所示:
{% for link in links %}
<div id="space">
<div class="w3-container">
<div class="w3-panel" style="padding: 0.06em">
<button class="block" type="button" title="{{link.title}}" onclick="window.open('{{link.dest}}')">
<img src="../{{link.image}}" alt="{{link.alt}}" style="max-height: 7em">
</button>
</div>
</div>
</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
然后,当我将它部署在 Heroku 上时,一切都正确构建python manage.py makemigrations并python manage.py migrate正确运行,但是当我查看页面时,它只显示以下内容:
我也无法使用我在第一台机器上创建的超级用户登录到管理页面,我知道这是相关的,但我不确定如何处理它。是否有一些步骤来加载和初始化数据库或其他什么?
完整的代码是在github这里是否有帮助。
谢谢您的帮助。
小智 7
发生这种情况是因为他们的架构文件系统不适合 SQLite3,并且会定期导致根本没有数据,从而使您的数据库变空。
Heroku 开发中心有一个关于这个主题的完整页面。引用相关部分:
Heroku 的 Cedar 堆栈有一个临时文件系统。您可以写入它,也可以从中读取,但内容将被定期清除。如果您要在 Heroku 上使用 SQLite,您将至少每 24 小时丢失一次整个数据库。
即使 Heroku 的磁盘持续运行 SQLite,它仍然不适合。由于 SQLite 不作为服务运行,因此每个 dyno 将运行一个单独的运行副本。这些副本中的每一个都需要自己的磁盘支持存储。这意味着为您的应用程序供电的每个 dyno 将具有不同的数据集,因为磁盘未同步。
Heroku 建议在生产中使用 PostgreSQL,你会发现很多资源都在讨论如何在 Heroku 上使用它而不是 SQLite。
如果需要,您还可以使用支持 SQLite3 的平台 PythonAnywhere。
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |