3

私のdjangoアプリケーションでは、いくつかの条件付きパラメーターを使用して、複数のステップで登録しています。このため、フォームからのデータをセッションに保存することを考え出しました。残念ながら、セッションは pickle を使用してデータをシリアル化しますが、これはファイルのシリアル化をサポートしておらず、
PicklingError: Can't pickle <type 'cStringIO.StringO'>: attribute lookup cStringIO.StringO failed. この問題を回避するには?次のすべてのビューに画像を変数として送信するか、GET パラメーターとして送信するか、他の方法で送信する必要がありますか? 問題はかなり明白なので、サンプル コードが必要かどうかはわかりません。

4

1 に答える 1

1

アップロードされるファイルのサイズが数KBを超える場合は、それらをセッションに保存したくない可能性があります(そして、GETを介してブラウザーにファイルを送り返したくないことは間違いありません)。

私はいくつかのオプションを考えることができます:

  • アップロードされたファイルが最後になるように、登録フォームを書き直すことができます。
  • フォームを1つのステップにし、javascriptを使用してマルチステップを偽造することができます(たとえば、DIVを非表示にしたり表示したりすることによって)。
  • 一時ファイルをディスクに保持し、ファイル名をセッションに保存することができます(古いファイルを定期的にクリーンアップすることを忘れないでください)
  • 登録を簡素化し、「プロファイル」ページでファイルのアップロードを行うことができます(おそらく、サイトの他の部分へのアクセスを許可する前に、「プロファイルに記入する必要があります」という要件を適用します)。
于 2010-09-11T02:09:04.933 に答える