在Django视图中使用FullCalendar

在Django视图中使用FullCalendar,django,django-views,fullcalendar,Django,Django Views,Fullcalendar,我正在尝试在我的网站上实现FullCalendar,但我对此有点陌生,不太确定如何格式化我想要做的事情。我有一个视图可以抓取每个用户的所有事件。我想把这些事件记录下来,并用它们填充日历。我的问题是,我不知道在视图中返回什么,也不知道如何在JavaScript函数中处理该返回值。以下是我现在拥有的: 视图: eventList和ownedEvent跟踪用户的所有事件。它们具有与之关联的名称/日期。我不明白的是,我需要将所有这些信息以何种格式返回到我的HttpResponse中 我的JavaScri

我正在尝试在我的网站上实现FullCalendar,但我对此有点陌生,不太确定如何格式化我想要做的事情。我有一个视图可以抓取每个用户的所有事件。我想把这些事件记录下来,并用它们填充日历。我的问题是,我不知道在视图中返回什么,也不知道如何在JavaScript函数中处理该返回值。以下是我现在拥有的:

视图:

eventList
ownedEvent
跟踪用户的所有事件。它们具有与之关联的名称/日期。我不明白的是,我需要将所有这些信息以何种格式返回到我的HttpResponse中

我的JavaScript函数是:

$(document).ready(function() {


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

});

我告诉它去Django景观,但之后我迷路了。非常感谢

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

这导致了
TypeError:\uuuu init\uuuuu()得到了一个意外的关键字参数“namedtuple\u as\u object”
。在谷歌搜索之后,我看到它在Django中使用时提到了一些向后兼容性问题。有解决方法吗?您使用的是哪个版本的Django?只使用json.dumps而不使用编码器。谢谢有趣的是,在我的旧版本中,默认编码器无法处理
datetime
s,这就是使用Django特定编码器的动机。默认情况下,标准Python库的文档不会报告它处理
datetime
s,因此我很惊喜地发现它在不添加某种自定义编码器的情况下工作。当你需要添加它时,它有多个好的答案。
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)