如何在django中重定向变量? 请指导我,谢谢。
urls.py
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
url(r'^computer/$', views.computer, name='computer'),
url(r'^result/$', views.result, name='result'),
)
这是我原来的views.py:
def computer(request):
result = Computer.objects.order_by('?')[:1]
return render(request, 'many/result.html',{'result':result})
我发现我有问题,渲染不会重定向到网址上的moneymany/result.html
,
因此,如果用户刷新,它将在同一页面上获得另一个结果。
所以我必须使用重定向到many/result.html
在django中重定向的常用方法是什么,我必须传递变量result
?
我试试这个,但不行:
def result(request):
return render(request, 'many/result.html')
def computer(request):
result = Computer.objects.order_by('?')[:1]
url = reverse(('many:result'), kwargs={ 'result': result })
return HttpResponseRedirect(url)
答案 0 :(得分:4)
如何使用重定向。
from django.shortcuts import redirect
def computer(request):
result = Computer.objects.order_by('?')[:1]
return redirect('view-name-you-want', { 'result'=result })
答案 1 :(得分:2)
你需要
url(r'^result/(?P<result>[^\/]*)/$', views.result, name='result'),
和
return redirect(reverse('many:result', kwargs={ 'result': result }))
或(不更改网址)
return redirect('/result/?p=%s' % result )
如果你想在重定向时保持POST数据,那就意味着你的设计不好。引用卢卡斯:
如果你遇到这样的问题,你的可能性很小 过度复杂的设计。这是对POST的HTTP的限制 数据不能与重定向一起使用。
答案 2 :(得分:0)
这与我合作,只需要传递url参数作为参数
return redirect('pagename' ,param1 , param2)
我的网址看起来像:
path('page', views.somefunction, name="pagename")
注意:在我的情况下,某些功能仅接受POST参数