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
- 根据需要修改
pattern
和replacement
。
- 将此代码放入
<yoursite>/middleware/sub.py
(如果尚不存在,请添加带有空 __init__.py
的目录中间件)
- 将
<yoursite>.middleware.sub.SubstituteMiddleware
添加到 settings.py
中的 MIDDLEWARE
-列表
请注意,此方法的不足之处在于它不仅替换了内容,还替换了
不小心匹配了部分 HTML-code.
对于某些 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
- 根据需要修改
pattern
和replacement
。 - 将此代码放入
<yoursite>/middleware/sub.py
(如果尚不存在,请添加带有空__init__.py
的目录中间件) - 将
<yoursite>.middleware.sub.SubstituteMiddleware
添加到settings.py
中的
MIDDLEWARE
-列表
请注意,此方法的不足之处在于它不仅替换了内容,还替换了 不小心匹配了部分 HTML-code.