我有两种观点:
def importContent(request):
d = get_some_data()
t = get_template('import.html')
c = Context({'entries' : d.entries })
return HttpResponse(t.render(c))
def doImport(request):
return HttpResponse("hey")
这是import.html:
{% for entry in entries %}
{{ entry.title}} <br>
{% endfor %}
<a href="/do_import">soo</a>
用户打开importContent()视图并按链接,打开doImport()视图。如何将d-variable从importContent()视图传递到doImport()视图?
答案 0 :(得分:2)
我可以想到几种方法来解决这个问题。
首先要求您启用sessions
。在此机制中,第一个视图将变量存储在用户的会话中,第二个视图将检索它。对于例如
def importContent(request):
d = get_some_data()
t = get_template('import.html')
c = Context({'entries' : d.entries })
request.session['entries'] = d
return HttpResponse(t.render(c))
def doImport(request):
if 'entries' in request.session:
d = request.session['entries']
else:
d = # Perform a look up or show a message etc.
return HttpResponse("hey")
会话也可以用自定义缓存替换。
第二个是让第二个显式查找数据。如果数据有限且不需要任何大量计算,这将更容易。
答案 1 :(得分:1)
如果要将所有条目传递回doImport,这并不容易。在请求中传递参数的方法是将它们放在url中,使用post请求或使用session,但这需要更多的工作。
使用URL并不是很方便,因为该网址上会有很多参数。
使用帖子有点奇怪,不适合html链接。
使用会话需要验证和使用用户。
你不能打电话:
d = get_some_data()
再次在doImport中?