gpt4 book ai didi

python - 我怎样才能使我的 Django 应用程序的这篇随机博客文章重定向更有效率

转载 作者:太空宇宙 更新时间:2023-11-04 10:52:47 25 4
gpt4 key购买 nike

我在我的网站上创建了一个随机博客文章链接,它使用的代码有效。当我创建它时,由于它一直说“QuerySet”对象没有属性“slug”,所以它无法正常工作,所以我想出了一个解决方法。变通方法向数据库发出了比必要更多的请求(我认为):

from django.http import HttpResponseRedirect
def randompost(request):
blog_posts = BlogPost.objects.filter(post_status = 'published').order_by('?')[:1]
blog_title = blog_posts[0]
blog_post = get_object_or_404(BlogPost, title=blog_title)

path = '/theblog/post/' + blog_post.slug + '/'

return HttpResponseRedirect(path)

理想情况下,我想要像 Django redirect URL to latest created blog post 这样的解决方案

它是否还需要正确的 http 代码,因为它是一个重定向?

带有查询集错误的旧代码:

blog_post = BlogPost.objects.filter(post_status = 'published').order_by('?')[:1]
path = '/theblog/post/' + blog_post.slug + '/'

return HttpResponseRedirect(path)

最佳答案

您可能知道也可能不知道,.order_by('?') 效率非常低,并且可能是该代码效率低下的最大来源。

这是获取随机发布的帖子的更有效(数据库方面)的方法

from django.shortcuts import redirect
from django.http import Http404
from random import randint

def randompost(request):
published_posts = BlogPost.objects.filter(post_status='published')
count = published_posts.count()
if count == 0:
# Raise an error or something as there are no blog posts
raise Http404
random_index = randint(0, count - 1)
random_post = published_posts[random_index]

# Then redirect to your post
return redirect('blog_post', random_post.slug)

关于python - 我怎样才能使我的 Django 应用程序的这篇随机博客文章重定向更有效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12617811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com