NoReverseMatch:反向' ...'未找到

时间:2018-01-19 12:43:28

标签: django django-templates django-rest-framework django-views

我想实现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)

我收到错误&#34;反向&#39; szenariohome&#39;有参数&#39;(&#39;&#39;,)&#39;未找到。尝试了2种模式&#34;。没有线模板的工作原理。 phase2的模板具有相同的行并且工作正常。这个问题可能发生,因为我使用了序列化器或者因为我混合了CBV和FBV?

感谢任何形式的帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

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

您是否将适当的id传递给了DescriptorList

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