13

私は、2 つの個別のモジュラー Django アプリを使用するプロジェクトに取り組んでいます。ただし、1 つのアプリには簡単なサムネイルが必要であり、もう 1 つのアプリには sorl サムネイルが必要です。残念ながら、2 つのサムネイル ライブラリはテンプレート タグの構文 {% ロード サムネイル %} を使用するため、それらを使用するテンプレートがレンダリングしようとすると衝突して壊れます。

この種の衝突を解決する方法はありますか? (たとえば、テンプレート オプションは、{% サムネールを easy_thumbnail としてロード %} の効果をもたらします)。アプリの 1 つをフォークして、サムネイル ライブラリの 1 つを別のものに置き換える必要がありますか? もしそうなら、私はどちらを選ぶべきですか?

私の質問を考えてくれてありがとう、ジョー

4

4 に答える 4

11

もちろん、独自のスタブ easy_thumbnail ラッパーを作成するだけです...

  1. thumbnailtagsdjango アプリの 1 つでパッケージを作成します...
  2. ...空であることを確認する__init__.py
  3. thumbnailtags/easy_thumbnail.pyのようなことを行います:

    from django.template import Library
    from easy_thumbnails.templatetags import thumbnail
    
    register = Library()    
    
    def easy_thumbnail(parser, token):
        return thumbnail(parser, token)
    
    register.tag(easy_thumbnail)
    
  4. 使用する{% load easy_thumbnail %}

ノート:

また、サムネイルを easy_thumbnail としてインポートし、ビットをスキップすることもできますが、def easy_thumbnail試したことはありません。

于 2011-11-18T14:09:58.713 に答える
6

このブログリンクは、これを処理する方法を示しています。

https://timmyomahony.com/blog/using-sorl-thumbnail-and-easy-thumbnails-same-template/

(以前は http://timmyomahony.com/blog/2012/10/22/using-sorl-thumbnail-and-easy-thumbnails-same-template/ )

于 2012-11-09T07:37:20.757 に答える
2

2015年更新

これを機能させるには、Tom Christie の回答に次の変更を加える必要がありました。

  1. templatetagsローカル アプリの 1 つでパッケージを作成します。名前を付けることが重要templatetagsです。テンプレート タグについては、 django のドキュメントを参照してください。
  2. ...__init__.py空かどうかを確認してください。
  3. これtemplatetags/easy_thumbnail.pyを行うには:

    from django.template import Library
    from easy_thumbnails.templatetags import thumbnail
    
    register = Library()    
    
    def easy_thumbnail(parser, token):
        return thumbnail.thumbnail(parser, token) # the important bit
    
    register.tag(easy_thumbnail)
    
  4. {% load easy_thumbnail %}またはpyjade- load easy_thumbnailを使用

于 2015-10-15T09:39:27.520 に答える