首页 文章

NoReverseMatch:未找到'…'的反向

提问于
浏览
0

我想实现Django REST Framework并相应地更改我的视图 . FBV阶段1更改为CBV DescriptorList

我的模板phase1.html

{% load rest_framework %}
...
<li><a href="{% url 'szenariohome' projectid %}">Return to Project Overview</a></li>

我的urls.py在app中名为szenario

urlpatterns = [
    url(r'^(?P<id>[0-9]+)/szenariohome/$', views.szenariohome, name='szenariohome'),
    url(r'^(?P<id>[0-9]+)/phase1/$', views.DescriptorList.as_view(), name='phase1'),
]

views.py

class DescriptorList (APIView):
    renderer_classes = [TemplateHTMLRenderer]
    template_name = 'szenario/phase1.html'

    def get(self, request, id):
        descriptor = Descriptor.objects.all()
        serializer = DescriptorSerializer(descriptor, many=True)
        return Response({'serializer': serializer, 'descriptor': descriptor})

@permission_required_or_403('szenario.view_project', (Project, 'id','id'))
def szenariohome(request, id): als links, mitarbeiter, projectleader
    projectname = get_object_or_404(Project, pk=id)
    projectuser =  AbstractUser.objects.filter (workingproject=id)
    projectid = id
    context = {'projectname': projectname,  'projectuser': projectuser, 'projectid': projectid}
    return render(request, 'szenario/szenariohome.html', context)

@permission_required_or_403('szenario.view_project', (Project, 'id','id'))
def phase2(request, id):
    projectname = get_object_or_404(Project, pk=id)
    projectid = id
    context = {'projectname': projectname, 'projectid': projectid}
    return render(request, 'szenario/phase2.html', context)

我得到错误“反向'szenariohome'与参数'('',)'找不到.2模式试图” . 没有线模板工作 . phase2的模板具有相同的行并且工作正常 . 这个问题可能发生,因为我使用了序列化器或因为我混合了CBV和FBV?

任何形式的帮助表示赞赏,谢谢 .

1 回答

  • 0

    该错误表示django无法解析名为 szenariohome 且参数为 '' (空字符串)的URL . 看起来没有设置 projectid ,因此无法解析URL .

    你把 id 传递给了 DescriptorList 吗?

    另请注意, id 是python中变量名称的不良选择,因为它与builtin function id冲突 .

相关问题