本文发自 http://www.binss.me/blog/record-django-comment-problems/,转载请注明出处。

在测试博客提交评论的时候出现了一个奇怪的问题: 若处于登录状态,则可以评论,否则评论失败,并会跳转到一个奇丑无比的无样式页面上。

查资料发现,这个奇丑无比的页面是django中的comments/preview.html默认模板,用于提醒用户表单项有误。

经过和官方文档对比,发现在这一句:<input type="text" class="form-control" id="id_name" placeholder="您的昵称">

少了name="name"。加上之后,未登录用户可以正常发表评论。个人猜测是,由于没加上name="name",所以没有提交用户名,如果用户未登录,则跳转到丑陋页面提示用户名字段没填写。如果用户已登录,则其会在获取不到提交用户名的情况下提取登录用户名作为评论的用户名。

至于由于缺少字段会跳转到丑陋页面,一个办法是重载它,如自己制作并放到/templates/comments/preview.html

另一个办法直接在评论页面用js代码进行校验,保证所有字段都填写才允许提交,这样就避免了进入丑陋页面。