【问题标题】:FullCalendar and djangoFullCalendar 和 Django
【发布时间】: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


    【解决方案1】:

    解决了。我猜 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 进行一次。并且像魅力一样工作。谢谢大家

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 2013-07-31
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多