Django:我可以使用 HttpResponseRedirect() 并为其提供要在此页面上呈现的任何参数吗?
Django: Can I use HttpResponseRedirect() and give it any arguments to be rendered on this page?
我有一个 Django 表单,在验证后我想重定向到一个成功页面。我从 "localhost/upload" 开始,提交我的表格,如果通过验证我想去 localhost/upload/success。下面的代码有效,我只想传递一个上下文字典,其中包含一些变量以呈现到页面。我只能使用(在下面的 views.py 代码中散列)
return render(request, 'results/success.html', context)
但是这个 return 到 localhost/upload,但是使用我的 success.html 模板 - 我想转到 upload/success。
这是我的代码:
views.py:
@login_required(login_url='/')
def upload(request):
""" Upload panel or results.
"""
if request.method == 'POST':
paneluploadform = PanelUploadForm(request.POST, request.FILES)
if paneluploadform.is_valid():
paneluploadform.upload()
context = {'hi': 'helloasdgja'}
# return render(request, 'results/success.html', context)
return HttpResponseRedirect('success')
else:
# print(paneluploadform.errors.as_text)
pass
else:
paneluploadform = PanelUploadForm()
context = {'paneluploadform': paneluploadform}
return render(request, 'results/upload.html', context)
@login_required(login_url='/')
def success(request):
""" Success view
"""
return render(request, 'results/success.html')
urls.py:
from django.conf.urls import url
from .views import *
urlpatterns = [
url(r'^upload/$', upload),
url(r'^upload/success/', success)
]
我可以使用散列的 return render() 行来提供我的测试上下文,但是这个 returns 到 "localhost:8000/upload"
我想转到 localhost:800/upload/success,但从上传视图获取信息并重定向到 upload/success。我可以将上下文参数传递给 HttpResponseRedirect 还是有办法解决这个问题?
会话变量对于在 pages/views.
之间传递信息很有用
https://docs.djangoproject.com/en/dev/topics/http/sessions/
Ian Clelland 在这里很好地突出了您的选择:
我有一个 Django 表单,在验证后我想重定向到一个成功页面。我从 "localhost/upload" 开始,提交我的表格,如果通过验证我想去 localhost/upload/success。下面的代码有效,我只想传递一个上下文字典,其中包含一些变量以呈现到页面。我只能使用(在下面的 views.py 代码中散列)
return render(request, 'results/success.html', context)
但是这个 return 到 localhost/upload,但是使用我的 success.html 模板 - 我想转到 upload/success。
这是我的代码:
views.py:
@login_required(login_url='/')
def upload(request):
""" Upload panel or results.
"""
if request.method == 'POST':
paneluploadform = PanelUploadForm(request.POST, request.FILES)
if paneluploadform.is_valid():
paneluploadform.upload()
context = {'hi': 'helloasdgja'}
# return render(request, 'results/success.html', context)
return HttpResponseRedirect('success')
else:
# print(paneluploadform.errors.as_text)
pass
else:
paneluploadform = PanelUploadForm()
context = {'paneluploadform': paneluploadform}
return render(request, 'results/upload.html', context)
@login_required(login_url='/')
def success(request):
""" Success view
"""
return render(request, 'results/success.html')
urls.py:
from django.conf.urls import url
from .views import *
urlpatterns = [
url(r'^upload/$', upload),
url(r'^upload/success/', success)
]
我可以使用散列的 return render() 行来提供我的测试上下文,但是这个 returns 到 "localhost:8000/upload"
我想转到 localhost:800/upload/success,但从上传视图获取信息并重定向到 upload/success。我可以将上下文参数传递给 HttpResponseRedirect 还是有办法解决这个问题?
会话变量对于在 pages/views.
之间传递信息很有用https://docs.djangoproject.com/en/dev/topics/http/sessions/
Ian Clelland 在这里很好地突出了您的选择: