【发布时间】:2020-01-04 12:35:40
【问题描述】:
我已经用 gunicorn 和 nginx 在数字海洋上建立了一个 django 网站。一切都很好,但是当用户在帖子上输入长标题,然后提交表单时,整个站点崩溃并出现错误 500。管理站点仍然可以访问,我可以删除该帖子,然后站点再次运行。
看起来无法使用标题太大的帖子创建和保存 slug,因为 slug 本身变得太大,这会导致错误,并使我的页面中引用该帖子的任何部分在访问时崩溃。
这是我的标题和弹头模型
title = models.CharField(max_length=120, unique=True)
slug = models.SlugField(unique=True, default='', editable=True)
我仍然希望限制为 120 个字符,但是如何在不导致网站崩溃的情况下强制执行它?我可以制作一个表格来阻止用户写长标题,还是在保存帖子和创建 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 个字符,否则它会再次崩溃。但仅在生产中,而不是在开发中
我收到一个错误: 类型字符变化的值太长(50) 我找到了解决方案,我现在正在测试。完成后我会发布答案。
【问题讨论】:
-
你能发布错误回溯吗?是的,您可以使用表单来验证max length。
-
@NalinDobhal 我无法从生产服务器获取错误日志,在我的开发服务器中我无法复制问题
-
为什么看不到错误日志?
-
@NalinDobhal 它从 gunicorn 运行我看不到像我在 django 本身的开发服务器上所做的错误。我会试试看有没有办法
-
所以在您的应用程序中配置日志记录。顺便说一句,您可以从 /var/log/syslog 获取 gunicorn 日志
标签: python django nginx gunicorn digital-ocean