在一个视图中存储request.session中的列表,并在另一个视图django中检索它

时间:2013-12-04 14:34:02

标签: django request django-sessions

我有一个巨大的列表,它将在django视图中从csv文件动态生成,但我需要在下一个视图中使用该列表,所以我想试试django sessions < / p>

def import_products(request):
    if request.method == 'POST':
        if request.FILES:
           csv_file_data = ...........
           total_records = [row for row in csv_file_data]
           request.session['list_data'] = total_records
           # total_records is `list of lists` of length more than 150
           # do some processing with the list and render the page
    return render_to_response('product/import_products.html') 

def do_something_with_csv_data_from_above_view(request):
    data = request.session['list_data']
    # do some operations with list and render the page
    return render_to_response('website/product/success.html',

如上所述,我需要使用total_records视图中的do_something_with_csv_data_from_above_view巨大列表,并通过将其存储在另一个变量中来删除会话

所以实际上如何实现/使用会话概念(我已经阅读了django文档但无法获得确切的概念)

就我而言,

  1. 当用户每次尝试上传csv文件时,我正在读取数据并存储 数据作为会话列表 ==&GT;这是正确的方法吗?我也希望将会话变量存储在    数据库概念
  2. 因为列表很大,我需要在下一个视图中将其删除 将其复制到另一个变量
  3. 我错过了什么,有人可以为我上面的场景实现确切的代码吗?

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  1. 客户端RESTful - 这是一个RESTful解决方案,但可能需要更多工作。您可以在第一次请求中检索客户端的数据,选择后可以将选定的行发送回服务器进行处理,CSV等。

  2. 缓存:在第一个请求中,您可以使用django文件系统或memcached在服务器上缓存数据。在第二个请求中,使用缓存密钥(可以是用户会话密钥+某个时间戳+其他任何内容)来获取数据并存储在数据库中。

  3. 如果有很多数据选项2可能会更好。

相关问题