长标题使 django 站点崩溃错误 500
Long title crashes django site error500
我用 gunicorn 和 nginx 在数字海洋上建立了一个 django 网站。一切正常,但是当用户在 post 上键入一个长标题,然后提交表单时,整个站点崩溃并显示错误 500。管理站点仍然可以访问,我可以删除它 post 然后该站点再次运行。
看起来无法使用标题太大的 post 创建和保存 slug,因为 slug 本身变得太大,这会导致错误并使我的页面的任何部分引用它post 访问时崩溃。
这是我的 title 和 slug 模型
title = models.CharField(max_length=120, unique=True)
slug = models.SlugField(unique=True, default='', editable=True)
我仍然希望有 120 个字符的限制,但我如何在不使网站崩溃的情况下执行它?我可以制作一个表格来阻止用户写长标题,还是在保存 post 并创建 slug 之前剪切太长的标题?
我的观点部分
form = PostForm(request.POST, request.FILES)
if form.is_valid() and 'form' in request.POST:
post = form.save(commit=False)
post.author = request.user
post.published_date = timezone.now()
post.typeof = "Article"
post.save()
return redirect(home)
我的forms.py非常简单,没有添加,只是列出所有字段
在开发服务器中测试并且工作正常,但在生产服务器中却不行
此外,我注意到标题中只允许使用大约 50 个字符,否则它会再次崩溃。但只在生产中,不在开发中
我收到一个错误:
类型字符值太长 varying(50)
我找到了解决方案,现在正在测试。完成后我会post回答。
问题是 slug 没有指定 max_length 属性,所以 django 创建的数据库需要一个较小的值。我不是这方面的专家,但是在 slugfield 上添加 max_value=255 并且没有改变任何其他东西之后它起作用了。我需要 运行 进行迁移,然后进行迁移。我重新启动了 gunicorn 和 nginx,现在一切都很好。
我用 gunicorn 和 nginx 在数字海洋上建立了一个 django 网站。一切正常,但是当用户在 post 上键入一个长标题,然后提交表单时,整个站点崩溃并显示错误 500。管理站点仍然可以访问,我可以删除它 post 然后该站点再次运行。
看起来无法使用标题太大的 post 创建和保存 slug,因为 slug 本身变得太大,这会导致错误并使我的页面的任何部分引用它post 访问时崩溃。
这是我的 title 和 slug 模型
title = models.CharField(max_length=120, unique=True)
slug = models.SlugField(unique=True, default='', editable=True)
我仍然希望有 120 个字符的限制,但我如何在不使网站崩溃的情况下执行它?我可以制作一个表格来阻止用户写长标题,还是在保存 post 并创建 slug 之前剪切太长的标题?
我的观点部分
form = PostForm(request.POST, request.FILES)
if form.is_valid() and 'form' in request.POST:
post = form.save(commit=False)
post.author = request.user
post.published_date = timezone.now()
post.typeof = "Article"
post.save()
return redirect(home)
我的forms.py非常简单,没有添加,只是列出所有字段
在开发服务器中测试并且工作正常,但在生产服务器中却不行 此外,我注意到标题中只允许使用大约 50 个字符,否则它会再次崩溃。但只在生产中,不在开发中
我收到一个错误: 类型字符值太长 varying(50) 我找到了解决方案,现在正在测试。完成后我会post回答。
问题是 slug 没有指定 max_length 属性,所以 django 创建的数据库需要一个较小的值。我不是这方面的专家,但是在 slugfield 上添加 max_value=255 并且没有改变任何其他东西之后它起作用了。我需要 运行 进行迁移,然后进行迁移。我重新启动了 gunicorn 和 nginx,现在一切都很好。