0

ありがとうございます。djangoのテンプレートページのファイルを印刷する方法は?

私はcsvファイルをアップロードして読むことができるビューを持っています。私はこのファイルのデータを私のテンプレートの1つ(したがってウェブページ上)に入れたいと思っています。私の見解は次のようになります。

@login_required 
def uploadFunc(request, username): 
user = get_object_or_404(User, username=username) 
if request.method == 'GET': 
    return render_to_response('upload.html',{'user':user},context_instance=RequestContext(request)) 
elif request.method == 'POST': 
    with open('penguins.csv', 'rb') as f: 
     reader = csv.reader(f) 
     for m in reader: 
      print m 
     return HttpResponseRedirect("/") 

あなたは私が(それは端末に出力ではなく、Webページを取得します)、抽出されたデータを印刷

print m 
return HttpResponseRedirect("/") 

から見て、その後にアップロードページをリダイレクトすることができたよう私のホームページでは、ペンギンのテーブルがどこにあるのですか?(名前を笑ってはいけません!私が知っている:))を構築する必要があります。私は、テンプレートindex.htmlに、そのテーブルに置かれるべきファイルであることを知るためにどうすればよいのか分かりません。

ご迷惑をおかけして申し訳ありませんが混乱している場合は、お気軽にご質問ください。

ありがとうございますが、最初のファイルをアップロードし、ディスク(またはメモリ)に保存する必要があり、再び、 blargie-BLA

+0

理解していない:ファイルのアップロードはどこですか?ファイルを開いていますが、ファイルを保存していません。また、最後のリターンラインは、なぜそこにありますか?このメソッドを他のメソッドで呼び出そうと思っていますが、取得して投稿しますか? –

+0

お問い合わせありがとうございます!開こうとしているファイルはdjangoフォルダにありますが、どうして私がそれを保存しないのかわかりません:(私は一般的にアップロードするのがとても新しいです。返信行、errr、私はそれを削除する必要があると思います:) –

答えて

1

は、その後、あなたは次の要求のために、この状態を保存する必要があります。例えば、セッションでは、いくつかの方法があります。ここで

は一例ですが、それがテストされていないと多少の誤差があるかもしれません...

FILE_UPLOAD_DIR = '/tmp' 

class UploadFileForm(forms.Form): 
    file = forms.FileField() 

@login_required 
def uploadFunc(request, username): 
    user = get_object_or_404(User, username=username) 
    if request.method == 'GET': 
     return render_to_response('upload.html',{'user':user},context_instance=RequestContext(request)) 
    elif request.method == 'POST': 
     form = UploadFileForm(request.POST, request.FILES) 
     if form.is_valid(): 
      path = _handle_uploaded_file(request.FILES['file']) 
      request.session['uploaded_file'] = path 
      return HttpResponseRedirect("/") 

def index(request): 
    if request.session.get("uploaded_file", None): 
     lines = [] 
     with open(request.session.pop("uploaded_file"), 'rb') as f: 
      reader = csv.reader(f) 
      for m in reader: 
       lines.append(m) 

     return render_to_response('index.html', { 'file_lines': lines }, context_instance=RequestContext(request)) 


def _handle_uploaded_file(source): 
    fd, filepath = tempfile.mkstemp(prefix=source.name, dir=FILE_UPLOAD_DIR) 
    with open(filepath, 'wb') as dest: 
     shutil.copyfileobj(source, dest) 
    return filepath 

次にあなたがテーブルを移入するfile_linesを使用することができますのindex.htmlのテンプレートインチ

私はちょうど今、ここでのURLのリストがあります見られる様々なスニペットから、このコードを "糊付け":いくつかのことは、私があります

+0

ありがとう:)今夜テストしよう! –

+0

ありがとうございました!:Dとリンクありがとう!バツ –