将通过URL的项目列表传递到视图
我有一个如下所示的项目列表:'Item 1', 'Item 2', 'Item 3'...
列表的长度是动态的。将通过URL的项目列表传递到视图
我的问题是如何将这个变量传递给我的视图?
编辑1 想我要澄清我试图:
return HttpResponseRedirect(reverse('newFeatures',
kwargs={'stock_number': stock_number, 'new_features': new_features}))
随着new_features
是我的动态列表,并且newFeatures
是启动这样一个观点:
def add_new_feature(request, stock_number, new_features):
不知道这是否合理,但我希望它能帮助我脱离黑暗
HttpResponseRedirect只是返回一个HTTP 302重定向响应,它将重定向到另一个url。您不能使用重定向发送任何类型的POST数据,因此如果您想包含任何变量,它必须是您重定向到的url的一部分。
如果你坚持在重定向之前不处理列表,那么你最好的选择可能是将列表转换为一个字符串,并将其用作url中的参数。 newFeatures函数然后可以将该字符串解析回项目列表。
实际上,如果47正在使用'reverse()'来传递'new_features',那么他/她使用的是GET,而不是POST,这将允许参数改变或向前传递。 – 2010-07-25 15:32:34
是的。通过GET发送的数据是URL的一部分,所以你和我都在考虑同样的事情。对不起,如果我不明确。 – BernzSed 2010-07-25 19:32:43
如何:
return HttpResponseRedirect(reverse('newFeatures',
kwargs={'stock_number': stock_number, 'new_features': ','.join(new_features)}))
和:
def add_new_feature(request, stock_number, new_features_str):
new_features = new_features_str.split(',')
这是假设在new_features
元素只包括那些对安全的网址字符,不包含逗号。如果情况并非如此,那么您将不得不执行某种形式的转义。
请记住,不建议GET风格的URL更改其目标的状态。您应该使用POST,这会阻止您通过URL传递参数(即通过reverse()
)。另外,有时服务器对URL的长度有限制,这会妨碍GET。
我们是在讨论将它从url conf传递给视图吗? – 2010-07-25 10:19:29
不一定......让我试试下面的the_void的答案,看看 – Stephen 2010-07-25 11:03:59