サイトにランダムなブログ投稿リンクを作成しましたが、使用するコードは機能します。私がそれを作成していたとき、「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 が URL を最新の作成されたブログ投稿にリダイレクトするようなソリューションが欲しい
リダイレクトなので、正しい http コードも必要ですか?
Queryset エラーのある古いコード:
blog_post = BlogPost.objects.filter(post_status = 'published').order_by('?')[:1]
path = '/theblog/post/' + blog_post.slug + '/'
return HttpResponseRedirect(path)