Python Django-如何在url中放置列表

Python Django-如何在url中放置列表,python,django,csv,django-1.9,Python,Django,Csv,Django 1.9,我正在视图中创建一个列表,以显示加载的csv文件中的元素(def showcv(request))。我想得到这个列表并把它放到url重定向中(第一个链接“a”),但我不知道怎么做 def showCsv(request): if request.POST: object_pk = request.POST.get('pk') csvname = request.FILES['f'] path = default_storage.save('med

我正在视图中创建一个列表,以显示加载的csv文件中的元素(
def showcv(request)
)。我想得到这个列表并把它放到url重定向中(第一个链接“a”),但我不知道怎么做

def showCsv(request):
    if request.POST:
       object_pk = request.POST.get('pk')
       csvname = request.FILES['f']
       path = default_storage.save('media/csv', ContentFile(csvname.read()))
       tmp_file = os.path.join('', path)
       csvname = open(tmp_file, 'rb')

       reader = csv.reader(codecs.iterdecode(csvname, 'utf-8'), delimiter=";")
       list_test = []
       for row in reader:
           list_test.append((row))

    return render(request, 'website/show_csv.html',
    { 'app_version':APP_VERSION, 'object_pk':object_pk, 'list': list_test})
show_csv.html

{% block content %}
<div class="menu">
 <ul class="blockchoixcontinuer">
   <a href="{% url 'website:impression_publipostage' object_pk list %}"> Continuer </a>
 </ul>
  <ul class="blockchoixretour">
    <a href="{% url 'website:addcsv' object_pk %}"> Retour </a>
  </ul>
 </div>
 <div class="container" id="container">
 <div class="row">
  <table class="table table-striped col-md-12">
      <tbody>
            {% for row in list %}
              <tr>
                  <td>{{ row.0 }}</td>
                  <td>{{ row.1 }}</td>
              </tr>
            {% endfor %}
        </tbody>
    </table>
  </div>
 </div>
{% endblock %}
{%block content%}
{列表%中的行的%1} {{row.0}} {{row.1}} {%endfor%} {%endblock%}
如果我理解这一点,您正在一个视图中读取列表(从上传的文件中获取),然后希望将整个列表传递给另一个视图

可以肯定的是,您将无法将整个列表作为url参数传递—若文件大于允许的url长度—它将失败。其他问题是性能问题,甚至是清晰度问题

在视图之间传递数据有多种解决方案,但您需要在服务器端以某种方式存储和保留数据,然后在视图之间传递一些标识符


最简单的方法是使用数据库,更复杂-将数据存储到文件中(您已经有了这个文件),然后在会话中存储文件的路径或通过参数将其传递到url,您可以将数据存储在缓存中(如果不是那么大)等等。

对不起,我找到了解决问题的方法

要做到这一点,我在其他文件中写下我的csv的url,然后在我的其他视图中打开这个文件,这并不是最好的主意,但它是有效的。 之后,您只需处理(添加元素、删除元素、在上下文中显示等)。谢谢你的帮助

ShowCsvView
path = default_storage.save('media/csv', ContentFile(csvname.read()))
    tmp_file = os.path.join('', path)
    csvname = open(tmp_file, 'rb')

    reader = csv.reader(codecs.iterdecode(csvname, 'utf-8'), delimiter=";")
    list_test = []
    for row in reader:
        list_test.append((row))

    f = io.open("media/list_file", "w")
    f.write(tmp_file)
    f.close()

CreatePdfView
list_element_csv = []
    with io.open("media/list_file", "r") as infile:
        str_path = infile.read()

    csvname = open(str_path, 'rb')
    reader = csv.reader(codecs.iterdecode(csvname, 'utf-8'), delimiter=";")
    for row in reader:
        list_element_csv.append(row)

你不能将CSV存储在模型中吗?如果是,您可以编写一个
视图
,其中显示此列表和一个引用的
主键
。我不能使用模型,因为我没有存储我的csv元素,因为当用户登录我的网站时,csv只是“临时加载”在媒体上。您显然希望如何处理此列表和URL?例如,它们是我的csv上的元素:[[NumeroProduit]、[NumeroSerie]、[SUPP-MC67-01110]、[20160428]、[PACE-MK25-03265]、[10035701'],我想在另一个视图中保存或传输此列表,以使用元素编写模板并打印它们。我选择url是因为我可以获取列表(如pk的get_object()),好的,
pk
指的是什么?