使用已部署到Heroku的django应用程序无法访问PostgreSQL中的object.id(内部服务器错误500)

时间:2018-12-25 22:13:24

标签: python django postgresql heroku

我在Heroku上部署了一个Django博客应用,但无法通过对象的ID访问对象。

当settings.py中的Debug = True时,一切正常。

即使当Debug = False时,也没有其他问题,例如静态文件问题,一切正常。我搜索了许多文章,但其中大多数都是关于静态文件问题的,与我的情况不同。

首先,我的模型。py:

class Post(models.Model):
    title = models.CharField(verbose_name='TITLE', max_length=120)
    slug = models.SlugField(verbose_name='SLUG', unique=True, allow_unicode=True, max_length=120)
    content = RichTextUploadingField(verbose_name='POST CONTENT')
    create_date = models.DateTimeField(verbose_name='Created date', auto_now_add=True)
    author = models.ForeignKey(User, null=True, on_delete=models.CASCADE)

class Bookmark(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(verbose_name='SLUG', unique=True, allow_unicode=True, max_length=100)
    address = models.URLField(verbose_name='url', unique=True)
    description = models.CharField(max_length=256)
    category = models.ForeignKey(BookmarkCategory, on_delete=models.CASCADE, null=True, blank=True)

在urls.py中:

path('post/<int:id>/', views.PostDetailView.as_view(), name='post_detail'),
path('bookmark/<int:id>/update/', views.BookmarkUpdateView.as_view(), name='bookmark_update'),

当我尝试使用id访问模板中的Post或Bookmark对象时出现问题,例如:

{% url 'myblog:post_detail' post.id %}

{% url 'myblog:bookmark_update' bookmark.id %}

我期望的是对象的DetailView或UpdateView,但是出现内部服务器错误(显示500.html)。
我也尝试了int:pk而不是int:id,但是一样的错误。

同样,当Debug = True时,一切都很好,即使Debug = False时,其他一切也可以正常工作。

基于Post模型和搜索功能的存档文件有很多。他们都在工作。

所以我尝试将urls.py更改为:

path('post/<slug>/', views.PostDetailView.as_view(), name='post_detail'),
path('bookmark/<slug>/update/', views.BookmarkUpdateView.as_view(), name='bookmark_update'),

然后就可以了!我可以使用模板中的子弹看到我请求的视图。仅当我尝试使用对象的ID访问对象时,才会出现问题。

所以我想postgreSQL可能存在一些问题,它存储对象ID的方式可能存在问题(也许是因为在models.py中没有显式定义ID),因为当我在本地使用SQLite3时,通过对象的ID访问没有问题。

现在,我可以避免使用slug而不是int:id的问题,但是我想使用int:id,因为基于基于slug的URL有点多余。

请任何人都可以帮助您确定问题所在以及解决方案是什么?

0 个答案:

没有答案