Django: Как передать js-переменную в html-шаблон в виде тега
Моя задача - отправить результат теста, созданного с помощью javascript, в html-шаблон, чтобы использовать его в теге {% if mark> = 4%}, чтобы записать в базу данных, что тест пройден. Я пытался составить ajax запрос, но не уверен, что он правильный.
views.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'),
...
practice.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>
...