我想实现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?
感谢任何形式的帮助,谢谢。
答案 0 :(得分:0)
该错误表示django无法解析名称为szenariohome
且参数为''
(空字符串)的网址。看起来projectid
未设置,因此无法解析URL。
您是否将适当的id
传递给了DescriptorList
?
另请注意,id
是python中变量名称的不良选择,因为它与builtin function id冲突。