我正试图在我的网站上实现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.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会为您提供适当的值,但最好考虑到错误输入的可能性。我正在对您的事件模型的结构进行假设。