当前位置: 首页 > 知识库问答 >
问题:

FullCalendar和django

常飞翼
2023-03-14

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

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

它只有一个日期属性。我知道fullcalendar使用start和end,但也会使用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/"
         });
    });

我必须在我的数据库中的测试对象,所有在今天的日期和四个以上在以前的日子。我还启用了时区,因此我的模型存储了感知的datetime对象

但fullcalendar不显示事件。完整的日历从今天的日期(11月25日)开始。所以我得到的是

start, end = 2013-10-27 00:00:00+00:00, 2013-12-08 00:00:00 

(为什么这是因为我得到了十一月的观点?)

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

,,]

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

html" target="_blank">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:转到Calendar/EventsFeed/,我得到一个空页面。意味着不返回json对象....??Edit2:我错了,eventfeeds通常会返回json,我只是在EDIT1中选中它时没有传递任何GET参数

共有1个答案

况胡媚
2023-03-14

解决了。我想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')

我没有dumpbed每一个json_entry,而是只dumpbed了一次json_list。工作得像个魅力。谢谢大家

 类似资料:
  • FullCalendar 是一个 jQuery 的日历插件。如下图所示:

  • ember-fullcalendar ember-fullcalendar brings the power of FullCalendar and FullCalendar Scheduler to Ember. Installation This addon works in Ember 2.12+ with no deprecations. To install it run: ember

  • 问题内容: 所以我有个约会模特 我想在工具中实现这一点。我不确定如何开始。任何帮助表示赞赏。谢谢。 问题答案: 由于您的问题表明您没有尝试过任何东西,因此猜测您知道javascript,并尝试了一些完整的日历js。 假设您有一个名为Event的模型,用于在日历中显示不同的事件。 在您的views.py中 最后在模板中设置完整日历,其中包括必要的CSS,JS文件和HTML代码。然后, 动态地处理某些

  • FullCalendar 是一个极其优秀的 JS 日程表控件,功能强大且简单易懂,FullCalendar 是一个 jQuery 插件,它提供一个全尺寸,像事例中的拖拽日历。 它使用 AJAX 来为每个月提取事件并轻松地配置为使用您自己资料的格式 (扩展名为谷歌日历提供)。它是以可视方式自定义并公开为用户触发事件 (如单击或拖动事件) 挂钩。它是根据MIT 许可证领有牌照的开放源代码。

  • 我正在使用Creative Tim的包“Light Bootstrap Dashboard Pro Angular”(参考:https://demos.creative-tim.com/light-bootstrap-dashboard-pro-Angular2/Dashboard) 在这个例子中,他使用了Fullcalendar,如下所示: 我已经尝试了(参见:fullcalendar&Angu

  • 我对全日历有问题。我正在使用周视图(DefaultView:“Basic week”)和工具栏按钮“Today”、“Prev”、“Next”。当我点击“今天”按钮时,日历就会返回到当前的一周,但日期选择不会改变。我希望“日历”导航到“当前周”并在“日历”上选择“今天日期”。但我有麻烦重新定义‘今天’按钮点击事件。 代码示例:https://plnkr.co/edit/dv9yiq1cdjxffts