2016-06-09 2 views
-1

로드 된 CSV 파일 (def showCsv(request))의 요소를보기 위해 목록에 목록을 만듭니다. 이 목록을 가져와이 목록을 URL 리디렉션 (첫 번째 링크 'a')에 넣으려는 것이지만 어떻게 해야할지 모르겠습니다.Django - URL에 목록을 넣는 방법

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}) 

내가 이것을 이해 해요, 당신이 하나 개의보기에서 목록을 읽고 (업로드 한 파일에서 그것을 얻을 경우) 다음 통과하고 싶은

{% 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 %} 
+0

해당 CSV를 모델에 저장할 수 없습니까? 만약 그렇다면,'pk'를 참조하여이 목록을 표시하는'view'를 작성할 수 있습니다. –

+0

내 csv 요소를 저장하지 않았기 때문에 모델을 사용할 수 없습니다. 사용자가 내 웹 사이트에 로그온하면 csv가 미디어에 "임시로로드"되기 때문입니다. – user1768782224

+0

분명히이 목록과 URL로 무엇을하고 싶습니까? –

답변

0

show_csv.html 전체 목록을 다른보기로.

전체 목록을 URL 매개 변수로 전달할 수 없으므로 파일이 허용 된 URL 길이보다 큰 경우 실패합니다. 실패합니다. 다른 문제는 성능 또는 심지어 명확성의 문제입니다.

보기간에 데이터를 전달하는 여러 가지 솔루션이 있지만 서버 측에 데이터를 저장하고 유지 한 다음보기간에 일부 식별자를 전달해야합니다.

가장 단순한 방법은 데이터베이스를 사용하는 것입니다. 파일에 데이터를 저장 한 다음 세션에있는 파일에 경로를 저장하거나 매개 변수를 통해 URL에 전달하면 캐시에 데이터를 저장할 수 있습니다. (그렇게 크지 않은 경우)

0

죄송합니다. 내 질문에 대한 해결책을 찾았습니다.

이 작업을 수행하려면 다른 파일에 내 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) 
관련 문제