我想通过单击以下页面来查看学生的成绩: 选择会话->选择课程
但是出现错误:
对带有关键字参数“ {'pk_1':1}”的“ selectresult”进行反向 找到了。尝试了1种模式: ['Dashboard \ / selectsession \ /(?P [0-9] +)\ /(?P [0-9] +)$']
我的代码:
urls.py中的网址模式:
path('selectsession/', views.SelectSession.as_view(), name='selectsession'),
path('selectsession/<int:session_pk>/', views.SelectCourse.as_view(), name='selectcourse'),
path('selectsession/<int:session_pk>/<int:pk_1>', views.BatchResult.as_view(), name='selectresult'),
模板: selectsession.html:
<li><a href="{% url 'Dashboard:selectcourse' session_pk=sesid.sesid %}">{{sesid.sesid}}</a></li>
selectcourse.html:
<li><a href="{% url 'Dashboard:selectresult' pk_1=course.course.cid %}">{{course.course}} {{course.teacher}}</a></li>
views.py:
@method_decorator(login_required, name='dispatch')
class SelectSession(ListView):
template_name = 'Dashboard/selectsession.html'
model = Session
fields = ['sesid']
def get_queryset(self):
return Session.objects.all()
@method_decorator(login_required, name='dispatch')
class SelectCourse(ListView):
template_name = 'Dashboard/selectcourse.html'
model = Registration
fields = ['all']
def get_queryset(self):
course = Registration.objects.filter(session_id=self.kwargs['session_pk'])
return course
@method_decorator(login_required, name='dispatch')
class BatchResult(ListView):
template_name = 'Dashboard/batchResult.html'
model = Result
fields = ['all']
def get_queryset(self):
result=Result.objects.filter(asign__reg__id=self.kwargs['pk_1'])
return result
答案 0 :(得分:0)
首先,遵循错误消息“未找到带有关键字参数'{'pk_1':1}的'selectresult'。”
也就是说,问题出在您的网址
path('selectsession/<int:session_pk>/<int:pk_1>', views.BatchResult.as_view(), name='selectresult'),
现在找出问题所在。...
这种类型的网址结构会生成这样的网址
localhost:8000/selectsession/2018/101
因此,当您调用此URL时,必须同时传递“ session_pk”和“ pk_1”这两个值。您可以像这样调用此网址
{% url 'Dashboard:selectresult' 2018 101 %}
,此url标签将生成类似的
localhost:8000/selectsession/2018/101
如果您了解这一点,请将您的selectcourse.html更改为:
<li><a href="{% url 'Dashboard:selectresult' sesid.sesid course.course.cid %}">{{course.course}} {{course.teacher}}</a></li>
还将selectcourse.html更改为:
<li><a href="{% url 'Dashboard:selectcourse' sesid.sesid %}">{{sesid.sesid}}</a></li>
答案 1 :(得分:-1)
您是否在两个列表视图中都尝试了self.kwargs['pk']
而不是session_pk
或pk_1
?