Не могу найти ошибку NoReverseMatch в Django
пожалуйста помогите найти ошибку. Выдает нижеописанную ошибку при отправки формы
NoReverseMatch at /lesson/1/practice/ Reverse for 'theory' with arguments '('',)' not found. 1 pattern(s) tried: ['lesson/(?P<lesson_id>[0-9]+)/theory/$']
Подозревал get_absolute_url в моделях, но без нее выходит та же ошибка. Так же не уверен в правильности использования одновременно CreateView и DetailView (В странице используется форма и одновременно вывод записи из БД), пробовал разделить и вызывать в одном классе, но выходит та же ошибка
urls.py
...
url(r'^news/$', News.as_view(), name='news'),
url(r'^aboutus/$', views.aboutus, name='aboutus'),
path(r'lesson/<int:lesson_id>/theory/', Theory.as_view(), name='theory'),
path(r'lesson/<int:lesson_id>/newwords/', Newwords.as_view(), name='newwords'),
path(r'lesson/<int:lesson_id>/practice/', Practice.as_view(), name='practice'),
...
views.py
class Practice(DetailView, CreateView):
model = Lessons
template_name = 'static/practice.html'
context_object_name = 'posts'
pk_url_kwarg = 'lesson_id'
form_class = LessonDone
def get_success_url(self):
return reverse_lazy('practice', kwargs={'lesson_id': self.pk})
def get_queryset(self):
return Lessons.objects.filter(user=self.request.user)
...
models.py
class Lessons(models.Model):
theory = models.TextField(blank=True)
words = models.TextField(blank=True)
question1 = models.CharField(max_length=255)
answer1 = models.CharField(max_length=255)
variant11 = models.CharField(max_length=255)
variant21 = models.CharField(max_length=255)
variant31 = models.CharField(max_length=255)
variant41 = models.CharField(max_length=255)
question2 = models.CharField(max_length=255)
answer2 = models.CharField(max_length=255)
variant12 = models.CharField(max_length=255)
variant22 = models.CharField(max_length=255)
variant32 = models.CharField(max_length=255)
variant42 = models.CharField(max_length=255)
question3 = models.CharField(max_length=255)
answer3 = models.CharField(max_length=255)
variant13 = models.CharField(max_length=255)
variant23 = models.CharField(max_length=255)
variant33 = models.CharField(max_length=255)
variant43 = models.CharField(max_length=255)
question4 = models.CharField(max_length=255)
answer4 = models.CharField(max_length=255)
variant14 = models.CharField(max_length=255)
variant24 = models.CharField(max_length=255)
variant34 = models.CharField(max_length=255)
variant44 = models.CharField(max_length=255)
question5 = models.CharField(max_length=255)
answer5 = models.CharField(max_length=255)
variant15 = models.CharField(max_length=255)
variant25 = models.CharField(max_length=255)
variant35 = models.CharField(max_length=255)
variant45 = models.CharField(max_length=255)
done = models.BooleanField(default=False)
user = models.ForeignKey(User, on_delete=models.CASCADE,null=True)
class Meta:
verbose_name = 'Уроки'
verbose_name_plural = 'Уроки'
def __str__(self):
return str(self.pk)
def get_absolute_url(self):
return reverse('theory', kwargs={'lesson_id' : self.pk})
practice.html
{% extends 'static/contacts.html' %}
{% load static %}
{% block lesson %}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-
awesome/5.15.3/css/all.min.css"/>
<!-- start Quiz button -->
<div class="start_btn"><button>Начать тест</button></div>
<!-- Info Box -->
<div class="info_box">
<div class="info-title"><span>Правила теста</span></div>
<div class="info-list">
<div class="info">1. У вас есть 15 секунд на каждый вопрос.</div>
<div class="info">2. Нельзя перевыбрать ответ.</div>
<div class="info">3. Вы не сможете выбрать ответ, если закончится время.</div>
<div class="info">4. Тест сбросится, если вы выйдете.</div>
<div class="info">5. В конце вы получите сумму правильных ответов.</div>
<div class="info">6. В конце вы получите сумму правильных ответов.</div>
</div>
<div class="buttons">
<button class="quit btn-dark">Выйти</button>
<button class="restart btn-dark">Продолжить</button>
</div>
</div>
<!-- Quiz Box -->
<div class="quiz_box">
<header>
<div class="title">Ваш тест</div>
<div class="timer">
<div class="time_left_txt">Осталось секунд</div>
<div class="timer_sec">15</div>
</div>
<div class="time_line"></div>
</header>
<section>
<div class="que_text">
<!-- Here I've inserted question from JavaScript -->
</div>
<div class="option_list">
<!-- Here I've inserted options from JavaScript -->
</div>
</section>
<!-- footer of Quiz Box -->
<footer>
<div class="total_que">
<!-- Here I've inserted Question Count Number from JavaScript -->
</div>
<button class="next_btn btn-dark">След вопрос</button>
</footer>
</div>
<!-- Result Box -->
<div class="result_box">
<div class="icon">
<i class="fas fa-crown"></i>
</div>
<div class="complete_text">Вы прошли тест.</div>
<div class="score_text">
<!-- Here I've inserted Score Result from JavaScript -->
</div>
<div class="buttons ">
<button class="restart btn-dark">Перепройти тест</button>
<form action="" method="POST"> {% csrf_token %}
{{ form.as_hidden }}
<button class="quit btn-dark" type="submit" value="Submit">Выйти</button></form>
</div>
</div>
<script>
var question1 = "{{ posts.question1 }}";
var answer1 = "{{ posts.answer1 }}";
var variant11 = "{{ posts.variant11 }}";
var variant21 = "{{ posts.variant21 }}";
var variant31 = "{{ posts.variant31 }}";
var variant41 = "{{ posts.variant41 }}";
var question2 = "{{ posts.question2 }}";
var answer2 = "{{ posts.answer2 }}";
var variant12 = "{{ posts.variant12 }}";
var variant22 = "{{ posts.variant22 }}";
var variant32 = "{{ posts.variant32 }}";
var variant42 = "{{ posts.variant42 }}";
var question3 = "{{ posts.question3 }}";
var answer3 = "{{ posts.answer3 }}";
var variant13 = "{{ posts.variant13 }}";
var variant23 = "{{ posts.variant23 }}";
var variant33 = "{{ posts.variant33 }}";
var variant43 = "{{ posts.variant43 }}";
var question4 = "{{ posts.question4 }}";
var answer4 = "{{ posts.answer4 }}";
var variant14 = "{{ posts.variant14 }}";
var variant24 = "{{ posts.variant24 }}";
var variant34 = "{{ posts.variant34 }}";
var variant44 = "{{ posts.variant44 }}";
var question5 = "{{ posts.question5 }}";
var answer5 = "{{ posts.answer5 }}";
var variant15 = "{{ posts.variant15 }}";
var variant25 = "{{ posts.variant25 }}";
var variant35 = "{{ posts.variant35 }}";
var variant45 = "{{ posts.variant45 }}";
</script>
<!-- Inside this JavaScript file I've inserted Questions and Options only -->
<script src="{% static 'js/questions.js' %}"></script>
<!-- Inside this JavaScript file I've coded all Quiz Codes -->
<script src="{% static 'js/script.js' %}"></script>
{% endblock %}
forms.py
class LessonDone(forms.ModelForm):
done = forms.BooleanField(widget=forms.HiddenInput(), initial=True)
class Meta:
model = Lessons
fields =['done']