2

djangoフォームユーティリティでsorlサムネイルを実装するにはどうすればよいですか?

したがって、フォーム utils のドキュメントには、その ImageWidget について次のように記載されています。

(サムネイルは、sorl-thumbnail がインストールされている場合にのみ使用できます。インストールされていない場合は、フルサイズの画像が表示されます)。

しかし、私はそれを実装することはできないようです。モデルで sorl の ImageField を使用しようとしましたが、form-utils の ImageWidget が壊れてしまい、テンプレートにこれしかない場合、テンプレートでそれを使用することに頭を悩ませることができません。

<li class="field_upload">
    {{ form.image.errors }}
    <label for="id_image" class="top">{{  form.image.label }}</label>
    {{ form.image }}
</li>

form utils には、次のオプションがあります。

ImageWidget は、キーワード引数 template を受け入れます。これは、画像のサムネイルとファイル入力ウィジェットが相互にどのようにレンダリングされるかを定義する文字列です。テンプレート文字列には、可変補間マーカー %(input)s および %(image)s が含まれている必要があります。デフォルト値は %(input)s
%(image)sです

コードでは次のようになります。

pic = forms.ImageField(
    widget=ImageWidget(template='%(image)s<br />%(input)s'))

しかし、私はまだそれを理解することはできません。

4

1 に答える 1

1

ImageFieldフォーム クラス定義ではasという名前を付けているように見えますがpic、テンプレートでは でフィールドを参照しようとしていますform.image

テンプレートを挿入して、今のところ標準の Django フォーム レンダラーを使用してみてください{{form}}。それが機能する場合は、テンプレートに問題があることがわかります。


SORL サムネイル ライブラリは、Django プロジェクトの Python パス (および Python イメージ ライブラリ) でのみアクセスできる必要があります。

これらのライブラリが Django プロジェクトで利用できるかどうかを確認するには、プロジェクトのルート ディレクトリに移動して実行します...

$ python manage.py shell
>> import sorl.thumbnail
>> import PIL

これらのインポートのどちらも s をスローしない場合、ImportErrorそれらは適切にインストールされています。


また、 で定義したフォーム全体など、さらにコードを含めることもできますforms.py

于 2011-07-07T22:40:37.987 に答える