Как соединить ajax запрос и DetailView(django)?

view.py

class SeriesViewClass(FormMixin,DetailView): 
    model = AnimeSeasons 
    form_class = UserCommentsForm 
    template_name = 'sitepage/series.html'

    def get_success_url(self,**kwargs): 
        return reverse_lazy('SeriesPage',kwargs = {'slug':self.get_object().slug,'season_num':self.get_object().season_num})

    def get_queryset(self):
        return AnimeSeasons.objects.filter(slug=self.kwargs['slug']).filter(season_num = self.kwargs['season_num'])

    def get_context_data(self,**kwargs): 
        context = super(SeriesViewClass, self).get_context_data(**kwargs)
        context['season'] = AnimeSeasons.objects.filter(pk = self.get_object().pk)    
        context['series'] = AnimeSeries.objects.filter(anime_season_id = self.get_object().id)
        context['first'] = AnimeSeries.objects.filter(anime_season_id = self.get_object().id).filter(series_num = 1)
        context['comments'] = Comments.objects.filter(anime_season_id = self.get_object().id)
        return context

    def post(self,request,slug,season_num): 
        print(self.request)
        if request.is_ajax():
            new_comment = Comments(anime_season_id = self.get_object().id,author = self.request.user,text=text)
            new_comment.save()
            return JsonResponse({'message': 'OK'})
        else:
            return JsonResponse({'message': 'Failed'})

    def form_valid(self,form):
        self.object = form.save(commit = True) 
        self.object.anime_season_id = self.get_object().id
        self.object.author = self.request.user 
        self.object.save() 
        return super().form_valid(form)

    def form_invalid(self,form): 
        pass 

models.py

from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse


class anime(models.Model): 
    anime_url = models.SlugField(null = True,max_length = 20,verbose_name = "URL")
    anime_photo = models.FileField(upload_to='media',verbose_name='Фото')
    anime_name = models.CharField(max_length = 50,verbose_name='Название Аниме') 
    anime_raiting =  models.CharField(null=True,max_length = 5,verbose_name='Рейтинг') 
    def __str__(self):
        return self.anime_name

    class Meta:
        verbose_name_plural = 'Все аниме'
        verbose_name = 'Аниме'


class AnimeSeasons(models.Model): 
    anime = models.ForeignKey(anime,on_delete=models.CASCADE,verbose_name = 'Название Аниме',blank = True,null = True,related_name='seasons')
    slug = models.SlugField(null = True,max_length = 20,verbose_name = "URL")
    season_num =  models.CharField(null = True,max_length = 3,verbose_name='Номер сезона')
    season_photo = models.FileField(upload_to='media',verbose_name='Фото',blank = True,null = True)
    season_raiting =  models.CharField(null=True,max_length = 5,verbose_name='Рейтинг') 
    description = models.TextField(null = True,blank = True,verbose_name='Описание')
    class Meta: 
        verbose_name_plural = 'Все сезоны'
        verbose_name = 'Сезон' 

    def __str__(self):
        return f'{self.slug} - {self.season_num}'


    def get_absolute_url(self):
        return ('animeseasons:detail', (), {
            'slug': self.anime.anime_url,
            'season_num': self.season_num,
        })

class AnimeSeries(models.Model): 
    anime_season =  models.ForeignKey(AnimeSeasons,on_delete=models.CASCADE,verbose_name = 'Сезон Аниме',blank = True,null = True)
    series_num = models.CharField(null = True,max_length = 50,verbose_name='Номер Серии')
    link = models.CharField(max_length = 50,verbose_name='Ссылка на плеер') 
    class Meta: 
        verbose_name_plural = 'Все серии сезона'
        verbose_name = 'Серия' 
    def __str__(self):
        return self.series_num



class Comments(models.Model): 
    anime_season = models.ForeignKey(AnimeSeasons,on_delete=models.CASCADE,verbose_name = 'Сезон',blank = True,null = True)
    author = models.ForeignKey(User,on_delete=models.CASCADE,verbose_name = 'Автор комментария',blank = True,null = True)
    date = models.DateTimeField(auto_now=True,verbose_name='Дата написания')
    text = models.TextField(verbose_name='Текст Комментария')
    class Meta: 
        verbose_name_plural = 'Все комментарии'
        verbose_name = 'Комментарий' 
    def __str__(self):
        return self.text

forms.py

from django import forms 
from django.forms import Textarea
from .models import Comments,Chat
from django.contrib.auth.forms import AuthenticationForm 
from django.contrib.auth.models import User 


class UserCommentsForm(forms.ModelForm): 
    class Meta: 
        model = Comments 
        fields = ('text',)    

    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        for field in self.fields: 
            self.fields[field].widget.attrs['class'] = 'form-control' 
        self.fields['text'].widget = Textarea(attrs={'rows':1})  

class AuthUser(AuthenticationForm,forms.ModelForm): 
    class Meta: 
        model = User 
        fields = ('username','password')

class RegisterForm(forms.ModelForm): 
    class Meta: 
        model = User 
        fields = ('username','password') 

    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        for field in self.fields: 
            self.fields[field].widget.attrs['class'] = 'form-control' 

    def save(self, commit=True):
        user = super().save(commit=False)
        user.set_password(self.cleaned_data["password"])
        if commit:
            user.save()
        return user 

urls.py

from django.urls import path,include 
from .views import StartpageCreateView,LogoutUser,SeriesViewClass,AuthUserClass,RegisterUserClass,SeasonsViewFunck,SeriesViewClass,ChatViewClass

urlpatterns = [
    path('',StartpageCreateView.as_view(),name = 'sitepage'),
    path('logout/',LogoutUser.as_view(),name = 'logout'),
    path('auth/',AuthUserClass.as_view(),name = 'Auth'),
    path('register/',RegisterUserClass.as_view(),name = 'Register'),
    path('chat/',ChatViewClass.as_view(), name = 'Chat'),
    path('<slug:slug>/',SeasonsViewFunck,name='SeasonPage'),
    path('<slug:slug>/<int:season_num>',SeriesViewClass.as_view(),name='SeriesPage'),
]

Что надо сделать,чтобы джанго принимал ajax запросы и добавлял комментарий в базу данных(Чтобы страница не перезагружалась)? И как импортировать JavaScript файлы из static(не видит путь)? введите сюда описание изображения

series.html

{% extends 'sitepage/sitepage.html' %}
{% load static %} 
{% block title %}Серии{% endblock %}
{% block css %}{% static 'sitepage/sitepage.css' %}{% endblock %}
{% block js %}{% static 'sitepage/ajax.js'%}{% endblock %}
{% block content %}

ajax.js

$(document).ready(function() {
    $('button').click(function(e) {
        e.preventDefault();

    var text = document.getElementById("input").value;
    var lock = document.location.pathname;


    $.ajax({
        url:lock,
        method:'POST',
        dataType:'json',
        data:{text:text},
        success: function(text){   
            alert(text);           
        }
        })
    })
})

Ответы (0 шт):