如何在Django中在视图间传递列表
我在一个页面上有一个列表,想把这个列表传到另一个页面去处理。现在我有的内容是这样的:
def view1(request):
if request.method=='POST':
list = request.POST.values()
HttpResponseRedirect('/urls/'+ str(list))
def view2(request, *list):
#do something with list
这些是网址:
urlpatterns = patterns('',
url(r'^urls/$', views.view1),
url(r'^urls/(?P<list>[-/\w]+)$', views.view2),
)
所以我有几个问题:
- 我该怎么写网址的规则,让它能识别这个列表?
- 我该怎么把这个列表和网址的其他部分连接起来,用在HttpResponseRedirect里,这样它才能正确读取?
- 我该怎么在第二个页面传递这个列表(我记得上次做这个的时候用过*,但找不到相关的资料)?
补充说明: 从更大的角度来看,我有一个模板和视图,提供一个对象列表,每个对象都有一个复选框可以选择。我还有第二个视图和模板,用来显示第一个视图中选中的对象的数据。我希望选中的对象数量没有限制,但这可能不是一个选项。
2 个回答
0
我希望选择的对象数量不是有限的,也就是说可以无限多,但这可能不是一个选项。
其实这是可以做到的。你可以把某个特定单词后面的所有内容作为一个整体,用正则表达式来处理,然后在你的视图中把它分成不同的“标签”。
1
正如Brandon所建议的,发送信息到第二个视图是一个可行的解决办法。大致可以这样做:
def view2(request):
if request.method == 'POST':
page_list=request.POST.values()
else:
HttpResponseRedirect('/urls/')
这样就不需要在网址中使用正则表达式了。