学到本章节时,修改完URL以及视图函数后,尝试运行,输入网址 127.0.0.1:8000/detail/1 发现报错,不管输入1还是2、4、5、6都报错。
检查代码半天也没发现哪里不对,就尝试输入了25、26,居然成功打开了文章详细页。
思考到article_id是文章发布时候的顺序号,而我在之前执行了多次 import_data.py导入数据,后面又删除了一些前面的文章,
所以我现在文章 id起始号是24。 这个坑是自己埋下的,删除数据要小心啊。
嗯嗯,这里记录的是表象,我简单提一下背后的原因。
这种情况是数据库anto_increment自增值引起的,如果添加了行数据又删除了,自增值是不会回退的,会一直自增下去,这就导致了同学记录的这个情况,另外这个值可以通过数据库重置。
希望对你有所帮助,祝你学习愉快。
这个问题个人理解是程序的健壮性不够导致的,当然这不是这次课程的重点,介意的可以将方法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('当前文章不存在')
老师,请问如何重置?
同样的坑我也踩了,好伤心