Обрабатывать POST и GET Mehtods в одном представлении с Django и Full Calendar JS - PullRequest
0 голосов
/ 01 декабря 2018

во-первых, извините за мой плохой английский, я очень избыточен с моими объяснениями, потому что я новичок в этом языке программирования и этом сообществе.

Итак, начнем, я смонтировал всю структуру дляполный календарь, и я использую модальное всплывающее окно, когда я нажимаю на пустое место в дате, чтобы добавить новое событие, и отлично работает, добавляя события в мою модель и рендеринг в JSON, реальный вопрос: как я могу сделать, чтобы обновитьсуществующее событие, когда я нажимаю на него ?, вот мой код:

мой views.py

from django.shortcuts import render, redirect
from django.http import HttpResponse, JsonResponse
from apps.calendarDCC.forms import EventForm
from apps.calendarDCC.models import EventsCalendar
import json

def show_calendar(request):
    return render(request, 'calenar/events_fullcalendar.html')#to show the calendar

def json_events(request):
    events = EventsCalendar.objects.all().values('id', 'title', 'description', 'start', 'end', 'className', 'editable', 'allDay', 'customer').order_by('id')
    events_list = list(events)
    return JsonResponse(events_list, safe=False)#render my events in JSON

def modal_addevent(request): #use 'Eventform' in a modal to add events
    if request.method == 'POST':
        form = EventForm(request.POST)
        if form.is_valid():
            form.save()
    return redirect('events_calendar')
else:
    form = EventForm()
return render(request, 'events/events_calendar.html', {'form':form})

мой шаблон в HTML

{% extends 'base/base.html' %}

{% block content %}
<div class="container">
<div class="col" id= "calendar">
    <script>
        $(function() {
            $('#calendar').fullCalendar({
                schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source',
                locale: 'en',
                //timezone: 'local',
                themeSystem: 'bootstrap4',
                handleWindowResize: true, 
                header: { 
                    left: 'prevYear,prev,next,nextYear, today', 
                    center: 'title',  
                    right: 'month,agendaWeek,agendaDay,list' 
                },
                events: '/calendar/json/events', #the url with JSON coded events
                editable: true, 
                navLinks: true, 
                nowIndicator: true, 
                weekNumbers: true, 
                eventLimit: true, 
                selectable: true, 
                displayEventTime: true,
                dayClick:function(date,jsevent,view){
                    $("#ModalAddEvents").modal(); // calls the modal to add events with ‘EventForm’
                },
                eventClick:function(calEvent,jsEvent,view){
                    // here is where I need help, how to edit an existing event and save to my model?
                },
            });
        });
    </script>
</div>
</div>
<div>
<!--modal(Add events to the calendar)-->
    <div class="modal fade" id="ModalAddEvents" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
    <div class="modal-content">
    <div class="modal-header">
        <h5 class="modal-title">Add a new event!</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
        <span aria-hidden="true">&times;</span>
        </button>
    </div>
    <div class="modal-body">
        <form method="post">
            {% csrf_token %}
            {{ form.as_p }}
            <br/>
            <div></div>
            <button type="button submit" class="btn btn-success" href="{{ 'events_calendar' }}">Save</button>
            <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
        </form>
    </div>
    <div class="modal-footer">
    </div>
    </div>
</div>
</div>
</div>
{% endblock content %}

Я попробовал всечто я думаю, чтобы сделать это, но без какого-либо ответа и после двух недель неудовлетворительных усилий я решил разместить здесь вопрос, пожалуйста, покажите мне путь!и будьте нежны с этим новичком, дайте мне знать, если я напутаю с этим вопросом.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...