2011-01-07 16 views
0

データ復元プロセスのための管理インターフェイス(モデルなし)を開発中です。ページ上のフォームを使用すると、ユーザーは復元ファイルをアップロードできます。今、私がしたいのは、ユーザーがフォームを送信するときに、まずファイルをアップロードし、それを前処理してから、確認ページをユーザーに表示したいのです。DjangoのFileInputフィールドを含むフォームの確認ページを表示する

前処理では、フォームが有効であると仮定して、復元ファイルをアンパックしてそのバックアップ時間を抽出し、確認ページのバックアップ時間(復元ファイルのその他の情報など)をユーザーに表示します。

私の問題は、ファイルの状態を保存するのが最善の方法であるかどうかわかりません。理想的には、アップロードされたファイルを確認ページのフォームに渡したいと考えています。その後、ユーザーが続行することに同意すると、復元ファイルを使用して実際にシステムを復元します。しかし、私はそれを行う方法を把握していないようです。

私はファイルを最初に保存して、何らかの形でファイルパスを隠しフィールドの確認ページに含めました。ただし、ユーザーが確認フォームを送信したときにファイルパスを変更できるため、セキュリティリスクが発生します。

この問題にはどのような方法で対処できますか?

ありがとうございます!

答えて

1

sessionにファイルパスの場所を格納します。あなたのビューからセッションにアクセスすることができます

def your_view(request): 
    ... 
    request.session['file_path'] = 'the file path' 

その後、別のビューでそれを得る:

def your_other_view(request): 
    ... 
    request.session.get('file_path') 

をして使用するために、テンプレートに渡します。

あなたは(Django docsから)、セキュリティを心配する必要はありません。

これは、サーバー側でデータを格納して送信すると、クッキーの送受信抽象化します。 CookieにはセッションIDが含まれています。データ自体ではありません。

+0

この回答は私のものよりも優れています。私は戻っていくつかのコードを更新する必要があるようです。 – girasquid

+0

@ルークそれは良いことだ! :) –

+0

ありがとうございました!動作します – Edwin

1

私はモデルを使ってこの問題を解決する傾向があり、ファイルを追跡し、最後に更新/アップロードされました。あなたの隠された入力では、後で取得するIDを埋め込むことができます。もし攻撃者があなたのフォームフィールドを混乱させたいのであれば、彼らは取得しようとするのは別のバックアップファイルです(そして、 )。

ファイルを処理するための一時的なモデルを作成し、ファイルの処理が完了したら(2番目の手順の最後に)、削除することをお勧めします。

関連する問題