2014-12-06 71 views
0

如何使用django中的变量进行重定向? 请指导我,谢谢。如何使用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的URL,
所以如果用户刷新,它会在同一页面上得到另一个结果。

所以我必须使用重定向到many/result.html
什么是在Django中重定向的常用方法,我必须通过变量result? 我试试这个,但没有工作:

​​

回答

3

如何使用重定向。

from django.shortcuts import redirect 

def computer(request): 
    result = Computer.objects.order_by('?')[:1] 
    return redirect('view-name-you-want', { 'result'=result }) 
+0

有error'''''ascii”编解码器不能解码字节0xe6'''' – user2492364 2014-12-06 11:15:24

+0

你应该不下来投给了正确的答案 – skzryzg 2014-12-06 11:59:42

+0

这真的不是我的家伙!你知道如何解决错误'''''ascii'编解码器无法解码字节0xe6''''? – user2492364 2014-12-06 12:20:13

2

你需要

url(r'^result/(?P<result>[^\/]*)/$', views.result, name='result'), 

return redirect(reverse('many:result', kwargs={ 'result': result })) 

或(不改变URL)

return redirect('/result/?p=%s' % result) 

,如果你想MAI在重定向时ntain POST数据,那么这意味着您的设计不太好。引用Lukasz:

如果您遇到此类问题,您可能会遇到轻微的机会,因为您的设计过于复杂。这是POST 数据无法与重定向一起使用的HTTP的限制。