我正在尝试将 fullcalendar 包与 Django 一起使用来实现日历。我能够显示日历、创建模型并将其保存到数据库,但在将其导入模板时遇到问题。我可以引入上下文事件信息,至于将其带入实际日历,我错过了目标并且碰壁了。我的信念是我如何调用 URL 来带回 JSON 响应数据。感谢所有帮助
模型.py
class CalendarEvents(models.Model):
id = models.AutoField(primary_key=True)
type = models.CharField(max_length=50, choices=EVENT_CHOICES)
name = models.CharField(max_length=145,null=True, blank=True)
location = models.CharField(max_length=100, null=True, blank=True)
start = models.DateTimeField(null=True, blank=True)
end = models.DateTimeField(null=True, blank=True)
urls.py
path("calendar", view=apps_calendar_view, name="calendar"),
path('calendar/all_events/', view=apps_calendar_all_events, name='calendar.all_events'),
views.py
def apps_calendar_view(request):
all_events = CalendarEvents.objects.all()
context = {
"events":all_events,
}
return render(request,'apps/apps-calendar.html', context)
def apps_calendar_all_events(request):
all_events = CalendarEvents.objects.all()
out = []
for event in all_events:
out.append({
'type':event.type,
'title': event.name,
'location':event.location,
'id': event.id,
'start': event.start.strftime("%m/%d/%Y, %H:%M:%S"),
'end': event.end.strftime("%m/%d/%Y, %H:%M:%S"),
})
print(out)
return JsonResponse(out, safe=False)
apps-calendar.html
<div class="col-xl-9">
<div class="card card-h-100">
<div class="card-body">
<div id="calendar">
</div>
</div>
</div>
</div>
<script>
import { Calendar } from '@fullcalendar/core'
import dayGridPlugin from '@fullcalendar/daygrid'
const calendarEl = document.getElementById('calendar')
const calendar = new Calendar(calendarEl, {
plugins: [
dayGridPlugin
// any other plugins
],
initialView: 'dayGridMonth',
weekends: false,
events: [
'/calendar/all_events'
]
})
calendar.render()
</script>
从这张图片中,我可以加载基本的
fullcalendar
并在日历上获取一些示例数据(来自预加载 .init.js 的示例数据),但是 我的对象事件 不会发布。我的事件上下文打印在#1,未显示在#2;只有样本数据是
这是我想要在日历上显示的
apps_calendar_all_events
的 JSON 输出。理想情况下应位于上图中的#2。