我想实现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 回答
该错误表示django无法解析名为
szenariohome
且参数为''
(空字符串)的URL . 看起来没有设置projectid
,因此无法解析URL .你把
id
传递给了DescriptorList
吗?另请注意,
id
是python中变量名称的不良选择,因为它与builtin function id冲突 .