Python 获取此错误(必须在URLconf中使用对象pk或slug调用通用详细视图QuizView。)
我一直在想如何修复这个错误。我知道错误是指什么(路径(测验)),但我不知道如何修复它,尽管我尝试了pk,尽管我可能没有做对。 这是我的url.py和模型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(
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
(typeint
)或slug
(typeslug
)。因此,您需要在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):
# …