Reputation: 969
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
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