Django:在传递的视图中使用 HttpResponseRedirect(reverse()) 访问 kwargs

Django: Accessing kwargs using HttpResponseRedirect(reverse()) in passed view

我正在尝试在成功视图中访问通过 HttpResponseRedirect() 传递的 kwargs。键存在于 kwarg 字典中,但值不存在。这是为什么?

观看次数:

class UploadView(View):

    paneluploadform = PanelUploadForm

    def get(self, request, *args, **kwargs):

        paneluploadform = self.paneluploadform()
        context = {'paneluploadform': paneluploadform}
        return render(request, 'results/upload.html', context)


    def post(self, request, *args, **kwargs):

        paneluploadform = self.paneluploadform(request.POST, request.FILES)

        if paneluploadform.is_valid():
            panel_name = paneluploadform.upload()
            return HttpResponseRedirect(
                    reverse('results:success',
                    kwargs={'panel_name': panel_name})
                )


        context = {'paneluploadform': paneluploadform}
        return render(request, 'results/upload.html', context)


def success(request, *args, **kwargs):

    return render(request, 'results/success.html')

urls.py:

urlpatterns = [
    url(r'^upload/$', UploadView.as_view(), name='upload'),
    url(r'^upload/successful-(?P<panel_name>)', success, name='success')
]

在我的 success.py 视图中,当我 print(kwargs) 时输出是 {'panel_name': ''}

但是我的 url 是 /localhost/upload/successful-panelnameientered

为什么 kwargs ={'panel_name': 'panelnameientered'} 没有?

我不完全确定,但我认为你应该使用 re_path 而且你没有设置模式来匹配 successful- 之后的内容。所以它应该是这样的:

re_path(r'^upload/successful-(?P<panel_name>[a-z]+)', success)