Получение отсутствия CSRF-токена при отправке данных формы в django

Я получаю ошибку CSRF token missing каждый раз при отправке формы, указанной ниже. В чем может быть проблема? Ниже приведен код моего файла views.py :

*all imports are here

# Create your views here.


def takeExam(request, pk):
    mock = MockTest.objects.get(id=pk)
    context = {
        'mock':mock, 
    }
    return render(request, "exam/take-exam.html", context)


@login_required(login_url='login')
def startExam(request,pk):
    mock=MockTest.objects.get(id=pk)
    questions=Question.objects.all().filter(test=mock)
    if request.method=='POST':
        pass
    response= render(request,'exam/start_exam.html',{'mock':mock,'questions':questions})
    response.set_cookie('mock_id',mock.id)
    return response


@login_required(login_url='login')
def calculateMarks(request):
    if request.COOKIES.get('mock_id') is not None:
        mock_id = request.COOKIES.get('mock_id')
        mock=MockTest.objects.get(id=mock_id)
        
        total_marks=0
        questions=Question.objects.all().filter(course=mock)
        for i in range(len(questions)):
            
            selected_ans = request.COOKIES.get(str(i+1))
            actual_answer = questions[i].answer
            if selected_ans == actual_answer:
                total_marks = total_marks + questions[i].marks
        std = student.CustomUser.objects.get(user_id=request.user.id)
        result = Result()
        result.marks=total_marks
        result.exam=mock
        result.student=std
        result.save()

        return HttpResponseRedirect('view-result')

@login_required(login_url='login')
def resultViews(request):
    mocks=MockTest.objects.all()
    return render(request,'exam/view_result.html',{'mocks':mocks})
    

@login_required(login_url='studentlogin')
def checkMark(request,pk):
    mock=MockTest.objects.get(id=pk)
    std = student.CustomUser.objects.get(user_id=request.user.id)
    results= Result.objects.all().filter(exam=mock).filter(student=std)
    return render(request,'exam/check_marks.html',{'results':results})

@login_required(login_url='studentlogin')
def studentMark(request):
    mocks=MockTest.objects.all()
    return render(request,'exam/student_marks.html',{'courses':mocks})



Мой html файл:

{% extends 'main.html' %} {% block content %} {%load static%}

<div
  class="jumbotron my-2 py-4"
  onmousedown="return false"
  onselectstart="return False"
>
  <h1 style="text-align: center">{{mock.name}}</h1>
  <form
    class="form my-2"
    autocomplete="off"
    onsubmit="saveAns()"
    action="{% url 'calculate-marks' %}"
    method="POST"
   
  >
    {% csrf_token %} {% for q in questions%} {% if q.question %}
    <div class="text-danger my-3 font-weight-bold">
      {{ forloop.counter }}. {% endif %} {% if q.imgQuestion %}
      <img src="{{q.imgQuestion.url}}" alt="imgQuestion" />
      {% elif q.question%} {{q.question}} {% endif %}
    </div>

    <input
      type="hidden"
      name="csrfmiddlewaretoken"
      value="vvPrLLUzLnzQZeMf33zg7IYh8BGzbJCPzG2O4E7kqIJ7b0FHHNMjhdCifp1GVguF"
    />

    <div class="form-check mx-4">
      <input
        class="form-check-input"
        type="radio"
        name="{{ forloop.counter }}"
        id="{{q.option1}}"
        value="Option1"
      />
      <label class="form-check-label" for="option1"> {{q.option1}} </label>
    </div>

    <div class="form-check mx-4">
      <input
        class="form-check-input"
        type="radio"
        name="{{ forloop.counter }}"
        id="{{q.option2}}"
        value="Option2"
      />
      <label class="form-check-label" for="option2"> {{q.option2}} </label>
    </div>

    <div class="form-check mx-4">
      <input
        class="form-check-input"
        type="radio"
        name="{{ forloop.counter }}"
        id="{{q.option3}}"
        value="Option3"
      />
      <label class="form-check-label" for="option3"> {{q.option3}} </label>
    </div>

    <div class="form-check mx-4">
      <input
        class="form-check-input"
        type="radio"
        name="{{ forloop.counter }}"
        id="{{q.option4}}"
        value="Option4"
      />
      <label class="form-check-label" for="option4"> {{q.option4}} </label>
    </div>

    {% endfor %}
    <input class="btn btn-success my-3" type="submit" value="Submit" />
  </form>
</div>

<script>
  function saveAns() {
    var ele = document.getElementsByTagName("input");
    for (i = 0; i < ele.length; i++) {
      if ((ele[i].type = "radio")) {
        if (ele[i].checked) {
          setCookie(ele[i].name, ele[i].value, 3);
        }
      }
    }
  }

  function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);
    var expires = "expires=" + d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
  }
</script>

{% endblock content %}

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

Вернуться на верх