django-cms 字符串替换输出

django-cms string replacement on output

对于某些 django-cms 站点,我想在输出时用另一个固定字符串替换每次出现的固定字符串(即连续两颗星:“**”)。编辑时,必须保持原来的字符串。这个想法是,有一个非常短的标签以供经常使用。

我怎样才能做到这一点?

这可以通过 Middleware:

pattern = "**"
replacement = """<span class="gender" title="some explanation">*</span>"""

class SubstituteMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        response = self.get_response(request)
        if hasattr(response,"content"):
            response.content = response.content.replace(pattern,replacement)
        return response
  • 根据需要修改patternreplacement
  • 将此代码放入 <yoursite>/middleware/sub.py(如果尚不存在,请添加带有空 __init__.py 的目录中间件)
  • <yoursite>.middleware.sub.SubstituteMiddleware 添加到 settings.py
  • 中的 MIDDLEWARE-列表

请注意,此方法的不足之处在于它不仅替换了内容,还替换了 不小心匹配了部分 HTML-code.