python - 存储长字符串资源的最 Pythonic/Django 风格的方法是什么?

标签 python django string django-templates

我的 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)是否有首选方法来处理长字符串 Assets 的存储和格式化?

一些额外的上下文:字符串资源可以是 HTML 或纯文本。最终迭代字典,并且另一个字符串中每个键的所有实例都将替换为其字符串值。

最佳答案

我认为这与许多 i8n 编译代码的处理方式类似。

将长字符串存储在单独文件的字典中。导入该字典,然后在代码中格式化所需的字符串。

关于python - 存储长字符串资源的最 Pythonic/Django 风格的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12394602/

相关文章:

java - 将文本拆分为句子并将句子拆分为单词 : BreakIterator vs regular expressions

python - 输入到 C++ 可执行 python 子进程

python - 该 View 未返回 HttpResponse 对象。它返回 None 而不是

c++ - 查找字符串中存在的不同字符

python - Django:模型 OneToOneField 与用户无法添加默认值

django - 如何在压缩后删除 Django 迁移?

java - 角色出现

python - 使用级别获取多索引 Pandas DataFrame 的最小索引

python - 渲染 : No module named app 时出现 ImportError

python - 从 Pandas.DataFrame 中带时间戳的位置计算速度