私のdjangoアプリケーションでは、いくつかの条件付きパラメーターを使用して、複数のステップで登録しています。このため、フォームからのデータをセッションに保存することを考え出しました。残念ながら、セッションは pickle を使用してデータをシリアル化しますが、これはファイルのシリアル化をサポートしておらず、
PicklingError: Can't pickle <type 'cStringIO.StringO'>: attribute lookup cStringIO.StringO failed
. この問題を回避するには?次のすべてのビューに画像を変数として送信するか、GET パラメーターとして送信するか、他の方法で送信する必要がありますか? 問題はかなり明白なので、サンプル コードが必要かどうかはわかりません。
2310 次
1 に答える
1
アップロードされるファイルのサイズが数KBを超える場合は、それらをセッションに保存したくない可能性があります(そして、GETを介してブラウザーにファイルを送り返したくないことは間違いありません)。
私はいくつかのオプションを考えることができます:
- アップロードされたファイルが最後になるように、登録フォームを書き直すことができます。
- フォームを1つのステップにし、javascriptを使用してマルチステップを偽造することができます(たとえば、DIVを非表示にしたり表示したりすることによって)。
- 一時ファイルをディスクに保持し、ファイル名をセッションに保存することができます(古いファイルを定期的にクリーンアップすることを忘れないでください)
- 登録を簡素化し、「プロファイル」ページでファイルのアップロードを行うことができます(おそらく、サイトの他の部分へのアクセスを許可する前に、「プロファイルに記入する必要があります」という要件を適用します)。
于 2010-09-11T02:09:04.933 に答える