Python 在Django中,如何将列表从一个视图传递到另一个视图?
我一直在搜索StackOverflow,但我还没有找到适合我的答案。我对Python和Django比较陌生,所以可能我想的不对 举个简单的例子,想象两个具有不同关联URL的视图。这不是完美的代码。我只是想弄清楚如何从视图1到视图2中获得一个可变长度的项目列表。我看不到通过URL实现的方法,因为列表可能会变长。这不是很容易做到吗Python 在Django中,如何将列表从一个视图传递到另一个视图?,python,django,list,django-views,Python,Django,List,Django Views,我一直在搜索StackOverflow,但我还没有找到适合我的答案。我对Python和Django比较陌生,所以可能我想的不对 举个简单的例子,想象两个具有不同关联URL的视图。这不是完美的代码。我只是想弄清楚如何从视图1到视图2中获得一个可变长度的项目列表。我看不到通过URL实现的方法,因为列表可能会变长。这不是很容易做到吗 def view2(request, list_to_process): use list_to_process to manufacture formset
def view2(request, list_to_process):
use list_to_process to manufacture formset (e.g. make a formset with one entry for each item in the list)
return render(request, 'Project/template2.html', {'formset': formset})
def view1(request):
if request.method == "POST":
if form.is_valid():
result = form.cleaned_data
list_to_process = []
for item in result:
list_to_process.append(item)
*WHAT CODE DO I USE HERE TO CALL VIEW2 AND SEND IT list_to_process AS AN ARGUMENT OR REQUEST ADDITION?*
else:
formset = formsettype()
helper = AssayHelper() (defined elsewhere)
helper.add_input(Submit("submit", "Submit")
return render(request, 'Project/template1.html', {'formset': formset, 'helper': helper})
有人能帮忙吗?谢谢。这正是本课程的目的。在视图1中:
request.session['list'] = list_to_process
在视图2中:
list_to_process = request.session['list']
如果您愿意使用
会话
,请使用@Daniel给出的答案
但在您的情况下,您似乎没有使用单独的url,您只需要在相同的url中呈现它,但需要该视图的输出,在这种情况下,请从python函数的命名参数获得帮助,如下所示-
def view2(request, list_to_process=None, **kwargs):
use list_to_process to manufacture formset (e.g. make a formset with one entry for each item in the list)
return render(request, 'Project/template2.html', {'formset': formset})
def view1(request):
if request.method == "POST":
if form.is_valid():
result = form.cleaned_data
list_to_process = []
for item in result:
list_to_process.append(item)
return view2(request, list_to_process=list_to_process)
else:
.....
使用命名参数
的好处是,它们是可选的,因此如果没有提供它们,就不会抛出错误,例如,当从视图1
内部直接调用该视图时,为什么不能将其放入会话中?的确,这只是同一视图.py中的另一个函数-您可以简单地。。称之为:)这仍然是基于类的视图的方式吗?还是有其他办法?谢谢。您使用什么类型的视图没有任何区别,会话是在视图之间持久化对象的正确方法。您能告诉我一个示例,上面的实现用于将参数从一个基于类的视图传递到另一个基于类的视图吗?