在django doc中说
>>> entry = Entry.objects.get(id=10)
比这更快:
>>> entry = Entry.object.get(headline="News Item Title")
所以我改变了我的看法:
def myview(request, slug):
post = get_object_or_404(Post, slug=slug)
#...
到此:
def myview(request, id, slug):
post = get_object_or_404(Post, pk=pk)
#...
但在我看来,我的slug并没有被使用。在这种情况下,由于有效的正则表达式,下面的两个网址都会得到正确的帖子:
127.0.0.1:8000/posts/5/my-first-post/
127.0.0.1:8000/posts/5/mylblablabalg/
我不想要这个。然后我把我的观点强加于此:
def myview(request, id, slug):
post = get_object_or_404(Post, pk=pk)
if post.slug == slug:
return render(request, 'blog/index.html', {'post': post})
else:
return HttpResponseRedirect(reverse('blog:index', args=(id, post.slug)))
它做了我想要的重定向相同页面的修正后的slug但我怀疑它是否在性能方面是好的。那么 db_index 呢?我应该在 SlugField 中使用它吗?
答案 0 :(得分:0)
如果您要通过SlugField从数据库中提取帖子,那么您应该告诉数据库索引该字段以提高性能。您还应将其设置为唯一。