невозможно добавить событие в Fullcalendar Django - PullRequest
0 голосов
/ 26 апреля 2020

Я не могу добавить событие в Fullcalendar. Кажется, что add_event в index. html и add_event в urls.py не связаны. Я не знаю, как установить связь между ними обоими. Каждый раз, когда я вставляю данные в индекс. html, данные, которые сохраняются в базе данных, всегда пусты, но каким-то образом сохраняются. Пожалуйста, помогите мне. Я пробовал так много вещей, и это все еще не работает.

index. html

<!DOCTYPE html>
<html>
   <head>
      <title>カレンダーサンプル</title>
      <link rel="stylesheet" href="{% static 'fullcalendar/calendar/css/fullcalendar.min.css' %}"/>
      <link rel="stylesheet" href="{% static 'fullcalendar/calendar/css/style.css' %}">
      <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
      <script type="text/javascript" src="{% static 'fullcalendar/calendar/js/moment.min.js' %}"></script>
      <script type="text/javascript" src="{% static 'fullcalendar/calendar/js/fullcalendar.min.js' %}"></script>
      <script type="text/javascript" src="{% static 'fullcalendar/calendar/lang/ja.js' %}"></script>
      <script>
         // ページ読み込み時の処理
         $(document).ready(function () {

         // カレンダーの設定
         $('#calendar').fullCalendar({
            height: 550,
            lang: "ja",
            header: {
               left: 'prev,next today',
               center: 'title',
               right: 'month,basicWeek,basicDay'
            },
            events: [
                    {% for event in events %}
                        {
                            title: "{{ event.title}}",
                            start: '{{ event.start|date:"Y-m-d" }}',
                            end: '{{ event.end|date:"Y-m-d" }}',
                            id: '{{ event.id }}',
                        },
                    {% endfor %}
                ],
            timeFormat: 'HH:mm',
            selectable: true,
            selectHelper: true,
            navLinks: true,
            // eventSources: [{
            //   url: '/fullcalendar/calendar',
            //    dataType: 'json',
            //    async: false,
            //    type : 'GET',
            //    error: function() {
            //       $('#script-warning').show();
            //    }
            // }],
            select: function(start, end, resource) {
               var title = prompt("予定タイトル:");
               var eventData;
               if (title) {
                  eventData = {
                     title: title,
                     start: start,
                     end: end,
                     allDay: true,
                     csrfmiddlewaretoken:$('input[title=csrfmiddlewaretoken]').val()
                  };
                  $('#calendar').fullCalendar('renderEvent', eventData, true);
                  $.ajax({
                     url: '/fullcalendar/add_event',
                     type: "GET",
                     data: JSON.stringify(eventData),
                     success: function(jsonResponse) {
                        alert("予定を登録しました。")
                     },
                     error: function(jsonResponse) {
                        alert("cannot insert!")
                     }
                  });
               }
               $('#calendar').fullCalendar('unselect');
               },
               editable: true,
               eventLimit: true,
            });
         });
      </script>
   </head>
   <body>
      <div id='calendar'></div>
   </body>
</html>

urls.py

def add_event(request):
     title = request.GET.get("title", None)
     start = request.GET.get("start", None)
     end = request.GET.get("end", None)
    #  event = Events(title=str(title), start=start, end=end)
     event = Events.objects.create(
             title = title,
             start = timezone.now(),
             end = timezone.now()
        )
     event.save()
     data = {}

1 Ответ

0 голосов
/ 29 апреля 2020

Вы должны изменить

data: JSON.stringify(eventData) 

на

data: eventData

Вы превратили отправляющие данные в строку JSON, но похоже, что ваш бэкэнд-код ожидает отдельные параметры - который jQuery закодирует для вас, если вы просто передадите необработанный объект Javascript в data.

...