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)
我正在尝试在成功视图中访问通过 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)