Django Ajax: не удалось загрузить ресурс: сервер ответил статусом 500 (внутренняя ошибка сервера) - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь внедрить ajax в свою систему ставок. Сайт не перезагружается после публикации ставки. В консоли я получаю

Не удалось загрузить ресурс: сервер ответил статусом 500 (внутренняя ошибка сервера)

Views.py

class MovieDetailView(FormMixin, DetailView):
    model = Movie
    template_name = 'main/detail_movie.html'
    context_object_name = 'movie'
    form_class = RateForm

    def get_context_data(self, **kwargs):
        context = super(MovieDetailView, self).get_context_data(**kwargs)
        context['form'] = RateForm(initial={'movie': self.object})
        context['my_rate'] = Rate.objects.filter(
                sender=self.request.user,
                movie=self.get_object()).first()
        return context

    def post(self, request, *args, **kwargs):
        self.object = self.get_object()
        form = self.get_form()
        if request.method == 'POST':
            if form.is_valid():
                new_rate = Rate.objects.update_or_create(
                sender=self.request.user, 
                movie=self.object,
                defaults={'choice': form.cleaned_data['choice']}
            )
                return JsonResponse({'rate': model_to_dict(new_rate)}, status=200)
        else:
            return self.form_invalid(form)

Models.py

class Rate(models.Model):
    class Meta:
        unique_together = (('sender', 'person'), ('sender', 'movie'),)

    choice = models.IntegerField(null=False, blank=False, choices=RATE_CHOICES)
    sender = models.ForeignKey(User, on_delete=models.CASCADE)
    person = models.ForeignKey(Person, on_delete=models.CASCADE, null=True)
    movie = models.ForeignKey(Movie, on_delete=models.CASCADE, null=True)

urls.py

path('movie/<slug:slug>/', MovieDetailView.as_view(), name='detail_movie'),

rate.js

$(document).ready(function(){
    $("#rateButton").click(function(){
        var serializedData = $("#rateForm").serialize();
        $.ajax({
            url: $("rateForm").data('url'),
            data: serializedData,
            type: 'post',
        })
    });
});

Оценка публикуется, но я вижу ее после обновления страницы.

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