gpt4 book ai didi

python - 全日历和 django

转载 作者:太空宇宙 更新时间:2023-11-04 09:06:33 25 4
gpt4 key购买 nike

我想在我的 Django 项目中使用 fullcalendar jquery 插件。我有一个入门模型

class Entry(models.Model):
date = models.DatetimeField()

它只有一个日期属性。我知道 fullcalendar 使用开始和结束,但也会用到它:)

我的 ajax View 如下

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 月的 View ?)

[<Entry: doctor - Title>, <Entry: doctor - New entry>, <Entry: doctor - Entry3>,

, , ]

通常它会获取所有条目,因为开始和结束日期不是它们应该的日期(记住 11 月的 View )

和 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:转到日历/eventsfeed/我得到一个空白页面。意思是不返回 json 对象....??EDIT2:我错了,eventfeeds 确实正常返回 json,我只是在 EDIT1 中检查时没有传递任何 GET 参数

最佳答案

解决了。我猜 fullcalendar 想要一个包含 json 对象的列表,但我返回的是普通的 json 对象。我做的是

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_list.append(json_entry)

return HttpResponse(json.dumps(json_list), content_type='application/json')

我没有对每个 json_entry 都进行 json.dump,但只对 json_list 进行一次。工作起来很有魅力。谢谢大家

关于python - 全日历和 django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20190670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com