【发布时间】:2013-11-25 11:09:14
【问题描述】:
我想在我的 django 项目中使用 fullcalendar jquery 插件。我有一个入口模型
class Entry(models.Model):
date = models.DatetimeField()
它只有一个日期属性。我知道 fullcalendar 使用 start 和 end 但也会这样做:)
我的 ajax 视图如下
def eventsFeed(request):
from django.utils.timezone import utc
from django.core.serializers.json import DjangoJSONEncoder
if request.is_ajax():
print 'Its ajax from fullCalendar()'
try:
start = datetime.fromtimestamp(int(request.GET.get('start', False))).replace(tzinfo=utc)
end = datetime.fromtimestamp(int(request.GET.get('end',False)))
except ValueError:
start = datetime.now.replace(tzinfo=utc)
end = start + timedelta(days=7)
entries = Entry.objects.filter(date__gte=start).filter(date__lte=end)
print entries
json_list = []
for entry in entries:
id = entry.id
title = entry.title
start = entry.date.strftime("%Y-%m-%dT%H:%M:%S")
allDay = False
json_entry = {'id':id, 'start':start, 'allDay':allDay, 'title': title}
json_entry = json.dumps(json_entry, cls=DjangoJSONEncoder)
json_list.append(json_entry)
return HttpResponse(json_list, content_type='application/json')
我的模板.html
<div id="calendar"></div>
<script>
$(document).ready(function (){
$("#calendar").fullCalendar({
events:"calendar/eventfeeds/"
});
});
我现在必须在今天的日期和之前的四个日期在我的数据库中进行测试。我也启用了时区,所以我的模型正在存储感知日期时间对象
但是 fullcalendar 不显示事件。完整日历从今天(11 月 25 日)开始。所以我得到的是
start, end = 2013-10-27 00:00:00+00:00, 2013-12-08 00:00:00
(为什么我得到了 11 月的观点?)
[<Entry: doctor - Title>, <Entry: doctor - New entry>, <Entry: doctor - Entry3>,
, , ]
通常它会获取所有条目,因为开始和结束日期不是他们应该的(记住 11 月视图)
和 json_list
['{"start": "2013-11-20T17:30:00", "allDay": false, "id": 1, "title": "Title"}',
'{"start": "2013-11-20T17:30:00", "allDay": false, "id": 2, "title": "New entry
"}', '{"start": "2013-11-20T17:30:00", "allDay": false, "id": 3, "title": "Entry
3"}', '{"start": "2013-11-21T22:00:00", "allDay": false, "id": 4, "title": "test
"}', '{"start": "2013-11-25T13:00:00", "allDay": false, "id": 5, "title": "New e
ntry"}', '{"start": "2013-11-25T09:52:00", "allDay": false, "id": 6, "title": "N
ew entry 2"}']
将开始日期更改为 ISO8601 格式。至于结束日期,它在文档中说如果事件对象没有结束日期,它使用结束日期作为开始日期后 120 分钟。所以它是自动填充的。但是事件不呈现......那我做错了什么?
EDIT1:转到日历/事件源/我得到一个空白页面。意思是不返回json对象......?? EDIT2:我错了,eventfeeds 确实正常返回 json,我只是在 EDIT1 中检查时没有传递任何 GET 参数
【问题讨论】:
标签: python django datetime fullcalendar