Djangoアプリに、いくつかの長い文字列を含む辞書を持つ関数があります。その関数が呼び出されると、それらの文字列がフォーマットされ、辞書が返されます。
例えば:
def my_strings(foo, bar, baz):
return = {
'string1': 'a really long string! %s' % foo,
'string2': 'another long one. %s %s' % (foo, bar),
'string3': 'yet another! %s %s %s' % (foo, bar, baz),
}
ただし、これらすべての長い文字列をPythonファイルに保存するのは見苦しく、よりクリーンな方法があるはずです。
私はそれらをテンプレートファイルに入れて、次のようにレンダリングを行うことをいじくりまわしました。
mytemplate.txt
{% if string1 %}
a really long string! {{ foo }}
{% endif %}
{% if string2 %}
another long one. {{ foo }} {{ bar }}
{% endif %}
{% if string3 %}
yet another! {{ foo }} {{ bar }} {{ baz }}
{% endif %}
Python
def my_strings(foo, bar, baz):
arg_dict = {
'foo': foo,
'bar': bar,
'baz': baz,
}
my_strings = {}
string_names = ['string1', 'string2', 'string3']
for s in string_names:
arg_dict[s] = True
my_strings[s] = render_to_string('mytemplate.txt', arg_dict).strip()
del arg_dict[s]
return my_strings
しかし、それは少し回りくどいようで、おそらくパフォーマンスが低下します。
Python、具体的にはDjangoで、長い文字列アセットの保存とフォーマットを処理するための好ましい方法はありますか?
いくつかの追加のコンテキスト:文字列アセットはHTMLまたはプレーンテキストのいずれかです。ディクショナリは最終的に繰り返され、さらに別の文字列内の各キーのすべてのインスタンスがその文字列値に置き換えられます。