0

我正在尝试在我的网站上实现 FullCalendar,但对此有点陌生,并且不太确定如何格式化我想要做的事情。我有一个视图,它将获取所有单个用户的事件。我想参加这些活动并用它们填充日历。我的问题是我不知道在视图中返回什么或如何在 JavaScript 函数中处理该返回值。这是我现在拥有的:

看法:

def calEvents(request):

    user = request.user.get_profile()
    eventList = user.eventList
    ownedList = user.ownedEvent

    events = #Part I'm having trouble with

    return HttpResponse(events)

并跟踪所有用户的事件eventListownedEvent他们有与之相关的姓名/日期。我不明白的是我需要将所有这些信息放入我的 HttpResponse 中返回的格式。

我的 JavaScript 函数是:

$(document).ready(function() {


    $('#calendar').fullCalendar({
      eventSources: [
        {
            url: '/calEvents/',
            editable: false,
        }
      ]
    });

});

我告诉它去 Django 视图,但在那之后我就迷路了。提前非常感谢!

4

1 回答 1

1

我通过在我的 Django 视图中构建字典列表来完成此操作,至少设置“标题”和开始时间的必填字段,然后使用simplejson.dumpswithcls=DjangoJSONEncoder返回 json。

from django.core.serializers.json import DjangoJSONEncoder

def calEvents(request):
    # as above, then:
    events = []
    for event in eventList:
        events.append({'title': event.name, 'start': event.start})
    # something similar for owned events, maybe with a different className if you like
    return HttpResponse(simplejson.dumps(events, cls=DjangoJSONEncoder), mimetype='application/json')

您还可以根据 get 请求提供的开始和结束时间来限制返回的事件:

def calEvents(request):
    user = request.user.get_profile()
    start_timestamp = request.GET.get('start')
    end_timestamp = request.GET.get('end')
    start_datetime = datetime.datetime.fromtimestamp(float(start_timestamp))
    end_datetime = datetime.datetime.fromtimestamp(float(end_timestamp))
    eventList = user.eventList.filter(start_time__lte=end_datetime, end_time__gte=start_datetime)

我忽略了时间戳转换的错误处理 - fullcalendar 会为您提供适当的值,但最好允许输入错误的可能性。我正在对您的事件模型的结构做出假设。

于 2013-07-30T19:45:40.160 回答