1

ブログ アプリケーション ページにカレンダーを表示するためにfullcalendar jqueryライブラリを使用しています。特定の日に。djangoPostusernumber of posts

javascriptライブラリに指定されたファイルとcssファイルを含めましたがfullcalendar、ページにカレンダーが正常に表示されています.しかし、djangoビューからカレンダーにデータを渡すにはどうすればよいですか?htmlページのソースを確認したところ、カレンダーがhtml テーブルで作成されます。

誰も似たようなことをしましたか?各暦日のセルに投稿数を表示する方法をアドバイスできますか?

私はこのような解決策を考えようとしました。特定の月について、おそらくdictキーが日(例: 4月1日)で値がどこにあるかを取得する必要があります

len(Post.objects.filter(month='april' ,day='1'))

これを応答に渡しdictます(上記のhtmlページをレンダリングします)。しかし、どうすればカレンダーにこの辞書から各値を取得させ、適切なセルに表示させることができますか?

私の考えが間違っている場合は、訂正してください。

見栄えが良いのでスクリプトを選択しfullcalendarました..しかし、イベント関連の機能は必要ありません..だから私はより単純な魂にオープンです.フルカレンダーがやり過ぎだと思うなら、より単純な代替案を提案してください

4

1 に答える 1

4

フルカレンダーの「イベント」データを提供する必要があります。これは投稿の数であり、イベントとしてレンダリングされます。ドキュメントによると、js配列のようにさまざまな形式である可能性があります。そのデータをテンプレートに渡す必要があります。テンプレートは次のようになります。

<script>
    ...
    $('#calendar').fullCalendar({
        events: {{ posts_counts|safe }}
    });
    ...
</script>

posts_countsfullcalendarがサポートする形式のdictの配列はどこにありますか?こちらをご覧ください。

ビューは次のようになります。これは大まかな例であり、それがどのように行われるかを示すためだけのものです。

def calendar(request):
    posts_counts = []
    for i in (1, 31):
        posts_counts.append({'title': len(Post.objects.filter(month='april', day=i)),
                             'start': '2012-04-%d' % i,
                             'end': '2012-04-%d' % i})
    return render(request, 'calendar_template.html',
                  {'posts_counts': simplejson.dumps(posts_counts)})

次に、ページのfullcalendarを、イベントとしての投稿数で初期化する必要があります。おそらく、カレンダーの外観をカスタマイズしたり、イベントのドラッグアンドドロップを無効にしたりすることができます。

投稿の数を見つけるソリューションは、多くのSQLクエリを生成するため、より良いソリューションを考える方がはるかに良いでしょう。

于 2012-04-10T13:16:27.927 に答える