私はDjango 2.0とPython 3.6.3を使用してブログ投稿のようにカスタマイズされた「投稿」を表示するウェブサイトを開発しました。ランダムに選択するユーザーボタン
基本的に「ランダム投稿」と表示されているボタンをユーザーがクリックできるようにします。このボタンをクリックすると、ランダムなブログ投稿を読み込むテンプレートが表示されます。ここで
class Post(models.Model):
post_id = models.AutoField(primary_key=True)
... other fields
... other fields
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
ているいくつかの関連するビュー:
ここclass PostListView(ListView):
model = Post
template_name = 'blog/post_list.html'
class PostDetailView(DetailView):
model = Post
template_name = 'blog/post_detail.html'
は私の問題の図である。
は、ここに私のPostモデルだ私は、値を作成しようとしています。ここ
import random
def random_post(request):
post_ids = Post.objects.all().values_list('post_id', flat=True)
random_obj = Post.objects.get(post_id=random.choice(post_ids))
context = {'random_post': random_obj,}
return render(request, 'blog/random_post.html', context)
投稿モデルのすべてのpost_id値のリスト。それから私はこの値リストから無作為の選択肢を得ようとしています。次に、私はコンテキストを作成し、このロジックを使用してテンプレートをレンダリングしようとしています。
はここでは関係urlpatternsです:
urlpatterns = [
path('post/<int:pk>/',
views.PostDetailView.as_view(),name='post_detail'),
path('post/random/<int:pk>', views.random_post, name='random_post'),
言うまでもないが、これは機能していないと言うこと。
私がオフにしておくと、データのない空のテンプレートがレンダリングされます。を含めると、エラーが発生する - 引数が見つかりません。ビュー内でデータが照会されていないか、データがビューからテンプレートに正しく送信されていないと仮定します。
私はDjangoを初めて使用しています。私はあなたの助けに感謝します!
これは 'ランダム'部分に役立ちます。 URLとルーティングはどうですか?私はこれをどのように実装しますか? –