为了账号安全,请及时绑定邮箱和手机立即绑定

有个不细心造成的问题,放在让我铭记一下,'NoneType' object has no attribute 'content'

https://img1.sycdn.imooc.com//5d0899970001776404700139.jpg

学到本章节时,修改完URL以及视图函数后,尝试运行,输入网址 127.0.0.1:8000/detail/1  发现报错,不管输入1还是2、4、5、6都报错。

检查代码半天也没发现哪里不对,就尝试输入了25、26,居然成功打开了文章详细页。

思考到article_id是文章发布时候的顺序号,而我在之前执行了多次 import_data.py导入数据,后面又删除了一些前面的文章,

所以我现在文章 id起始号是24。 这个坑是自己埋下的,删除数据要小心啊。


https://img1.sycdn.imooc.com//5d089a8c000105d902880090.jpg


正在回答

4 回答

嗯嗯,这里记录的是表象,我简单提一下背后的原因。
这种情况是数据库anto_increment自增值引起的,如果添加了行数据又删除了,自增值是不会回退的,会一直自增下去,这就导致了同学记录的这个情况,另外这个值可以通过数据库重置。
希望对你有所帮助,祝你学习愉快。

3 回复 有任何疑惑可以回复我~
#1

Ethan_Ban 提问者

谢谢老师
2019-06-22 回复 有任何疑惑可以回复我~

这个问题个人理解是程序的健壮性不够导致的,当然这不是这次课程的重点,介意的可以将方法get_detail_page进行如下改造,加一个判断即可。

def get_detail_page(request, article_id):
    all_article = Article.objects.all()
    curr_article = None
    for article in all_article:
        if article.article_id == article_id:
            curr_article = article
            break
    if curr_article:
        section_list = curr_article.content.split('\n')
        return render(request, 'blog/detail.html',
                      {
                          'curr_article': curr_article,
                          'section_list': section_list
                      })
    else:
        return HttpResponse('当前文章不存在')


0 回复 有任何疑惑可以回复我~

老师,请问如何重置?

1 回复 有任何疑惑可以回复我~

同样的坑我也踩了,好伤心

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

有个不细心造成的问题,放在让我铭记一下,'NoneType' object has no attribute 'content'

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信