1

我正在使用fullcalendar jquery库在我的django博客应用程序页面中显示日历。我有一些Post由登录创建的 s,user并希望向他展示每个月的日历视图,其中number of posts由他在每一天制作,如果没有发布,则为 0在特定的一天。

我已经包含了库中给出的javascriptcss文件,fullcalendar并且我的页面成功显示了日历。但是你如何将数据从django视图传递到日历?当我检查 html 页面的源时,我看到日历是由 html 表制成。

有没有人做过类似的事情?你能建议如何在每个日历日单元格上显示帖子数量吗?

我试图想一个这样的解决方案,对于一个特定的月份,我可能需要得到一个dictwhere 键是天(例如:4 月 1 日)并且值是

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

并将其传递dict给响应(呈现上面的 html 页面)。但是我怎样才能让日历从这个字典中获取每个值并将其显示在适当的单元格中呢?

如果我的想法有问题,请纠正我。

我选择fullcalendar脚本是因为它看起来不错..但我不需要任何与事件相关的功能..所以我对更简单的灵魂持开放态度。如果你认为 fullcalendar 是矫枉过正,请建议一个更简单的替代方案

4

1 回答 1

4

您需要提供完整的日历“事件”数据,这可能是帖子的数量,并且将呈现为事件。根据文档,它可能采用不同的格式,例如 js 数组。您只需将该数据传递到模板中。模板可能如下所示:

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

posts_countsfullcalendar 支持的格式的字典数组在哪里,看这里

视图可能看起来像这样。这是一个粗略的例子,只是为了展示它是如何完成的:

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 回答