Я пытаюсь внедрить 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',
})
});
});
Оценка публикуется, но я вижу ее после обновления страницы.