trouselife
trouselife

Reputation: 969

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

I am trying to access the kwargs passed through HttpResponseRedirect() in a success view. The key is present in the kwarg dict, but the value is not. Why is this?

Views:

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')
]

In my success.py view when i print(kwargs) the output is {'panel_name': ''}

But my url is /localhost/upload/successful-panelnameientered

Why doesn't kwargs ={'panel_name': 'panelnameientered'} ?

Upvotes: 1

Views: 946

Answers (1)

eLRuLL
eLRuLL

Reputation: 18799

I am not completely sure, but I think you should be using re_path and also you didn't set a pattern to match what is after successful-. so it should be like:

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

Upvotes: 1

Related Questions