Mi tarea es enviar el resultado de la prueba, creado con javascript, a la plantilla html para usarla en la etiqueta {% if mark> = 4%}, para escribir en la base de datos que se pasó la prueba. Intenté redactar una solicitud ajax pero no estoy seguro de si es correcta.
vistas.py
def practice(request, lesson_id): form = LessonDone() posts = get_object_or_404(Lessons, pk=lesson_id) lessonid = Lessons.objects.get(pk=lesson_id) mark = request.POST.get('url') if request.method == 'POST': p, created = DoneLessonsModel.objects.get_or_create( user=request.user, lessons=lessonid, defaults={'done': True}, ) form = LessonDone(request.POST, instance=p) if form.is_valid(): try: form.save() return redirect('practice') except: form.add_error(None, 'Ошибка') context = {'posts': posts, 'form': form, 'mark': mark} return render(request, 'landing/../static/practice.html', context)urls.py
... path(r'lesson/<int:lesson_id>/practice/', views.practice, name='practice'), ...practica.html
... <div class="buttons "> <button class="restart btn-dark">Перепройти тест{{ mark }}</button> {% if mark >= 4 %} <form action="" method="POST"> {% csrf_token %} {{ form }} {% endif %} <button class="quit btn-dark" type="submit" value="Submit" id="send-my-url-to-django-button">Выйти</button> {% if mark >= 4 %} </form> {% endif %} </div> ... </script> <script type="text/javascript"> $(document).ready(function() { var url = userScore; $("#send-my-url-to-django-button").click(function() { $.ajax({ url: {% url 'practice' posts.pk %}, type: "POST", dataType: "json", data: { url: url, csrfmiddlewaretoken: '{{ csrf_token }}' }, success : function(json) { alert("Successfully sent the URL to Django"); }, error : function(xhr,errmsg,err) { alert("Could not send URL to Django. Error: " + xhr.status + ": " + xhr.responseText); } }); }); }); </script> ...