在Django视图中使用FullCalendar



我正试图在我的网站上实现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)

CCD_ 1和CCD_ 2跟踪用户的所有事件。他们有相关的姓名/日期。我不明白的是,我需要把所有信息放在HttpResponse中返回的格式。

我的JavaScript函数是:

$(document).ready(function() {

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

我告诉它去Django视图,但在那之后我迷失了方向。提前感谢!

我在Django视图中构建了一个字典列表,至少设置了所需的"title"字段和开始时间,然后使用simplejson.dumpscls=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会为您提供适当的值,但最好考虑到错误输入的可能性。我正在对您的事件模型的结构进行假设。

相关内容

  • 没有找到相关文章

最新更新