Python 获取此错误(必须在URLconf中使用对象pk或slug调用通用详细视图QuizView。)

Python 获取此错误(必须在URLconf中使用对象pk或slug调用通用详细视图QuizView。),python,django,Python,Django,我一直在想如何修复这个错误。我知道错误是指什么(路径(测验)),但我不知道如何修复它,尽管我尝试了pk,尽管我可能没有做对。 这是我的url.py和模型 urlpatterns = [ path('JSUMA/', include('JSUMA.urls')), path('admin/', admin.site.urls), path("register/", v.register, name="register"), path('', include(

我一直在想如何修复这个错误。我知道错误是指什么(路径(测验)),但我不知道如何修复它,尽管我尝试了pk,尽管我可能没有做对。 这是我的url.py和模型

urlpatterns = [
path('JSUMA/', include('JSUMA.urls')),
path('admin/', admin.site.urls),
path("register/", v.register, name="register"),
path('', include("django.contrib.auth.urls")),
path("contact/", v.contactview, name="contact"),
path("Quizzes/", v.QuizView.as_view(), name="quiz")
]

models.py

class User(models.Model):
    first_name = models.CharField(max_length=25)
    last_name = models.CharField(max_length=25)
    #password = models.CharField(max_length=25)
    email = models.EmailField(max_length=100)

class Quiz(models.Model):
    name = models.CharField(max_length=200,primary_key=True)
    NOQ = models.IntegerField(default=1)
    
   
    

    class Meta:
        verbose_name = "Quiz"
        verbose_name_plural = "Quizzes"
    
    def __str__(self):
        return self.name
    #number Of Questions
class Major(models.Model):  
    major = models.CharField(max_length=200)
    majorData = models.IntegerField(default=0)
    answer = models.ManyToManyField('Answer')
    def __str__(self):
        return self.major

class Question(models.Model):
    question_text = models.CharField(max_length=400)
    quiz = models.ForeignKey("Quiz", on_delete=models.CASCADE, null=True)

    def __str__(self):
        return self.question_text


class Answer(models.Model):
    question = models.ForeignKey('Question', on_delete=models.CASCADE, null=True)
    answer_text = models.CharField(max_length=200)


    def __str__(self):
         return self.answer_text

QuizView
是一个
DetailView
,因此这意味着我们需要一些东西来指定要显示的项目。默认情况下,Django将查找
pk
(type
int
)或
slug
(type
slug
)。因此,您需要在URL路径中包含以下内容:

urlpatterns = [
    path('Quizzes/<int:pk>/', v.QuizView.as_view(), name='quiz')
]
然后,在模板中,您可以通过以下方式访问相关的
问题
s:

{% for question in object.question_set.all %}
    {{ question_text }}
{% endfor %}

然后您不需要指定
pk
/
slug
,因为
ListView
将列出所有项目,或者可能是一个分页的变体。

您可以共享
QuizView
类QuizView(generic.DetailView):model=Question template\u name='Quizzes/quick.html'
为什么
模型=问题
,当视图名为
QuizView
时,我假设是因为QuizView会显示问题。应该替换什么您可以使用
myquick.Question\u set.all()
访问
测验的
问题
s。
{% for question in object.question_set.all %}
    {{ question_text }}
{% endfor %}
from django.views.generic.list import ListView

class QuizView(ListView):
    # …