问题的起因还是升级服务,从 python2.7 django1.6 升级到 python3.8 django3.2。
先看下模板的内容,这个模板在原始版本中是好着的。
{% load markup %}{{ issue.description|markdown }}
<a href="{{ ABSOLUTE_URL_ROOT }}{{ issue.get_absolute_url }}">Permalink</a>
这里注意,在原始版本中,这种用法需要 setting.py 给与支持。
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.admin',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.markup',
'django.contrib.messages',
'django.contrib.staticfiles',
'raven.contrib.django',
'south',
'pipeline',
'tastypie',
'djcelery',
'djcelery_email',
'infrastructure',
'dashboard'
)
注意其中的 : 'django.contrib.markup',
这里是需要将这个添加到 INSTALLED_APPS 中去的。
ok,现在问题来了,'django.contrib.markup', 这个东西,在django1.6以后,就彻底没了,废弃掉了,所以上面的 django 模板就没法用了,{% load markup %} 这东西就不生效了,会直接导致模板无法被正常加载的。
解决之法:
pip install django-markup[all_filter_dependencies]
或者直接下这些包:
bleach 5.0.0
django-markup 1.5
docutils 0.18.1
html5lib 1.1
httplib2 0.20.4
importlib-metadata 4.11.4
Markdown 3.3.7
Pygments 2.12.0
python-creole 1.4.10
raven 6.10.0
regex 2022.6.2
smartypants 2.0.1
textile 4.0.2
utils 1.0.1
webencodings 0.5.1
这两者基本是等价的。
然后添加'django_markup', 到 INSTALLED_APPS :
INSTALLED_APPS = (
...
'django_markup',
)
最后,将原先的模板代码,进行变更:
{% load markup_tags %}{{ issue.description|apply_markup:"markdown" }}
<a href="{{ ABSOLUTE_URL_ROOT }}{{ issue.get_absolute_url }}">Permalink</a>
注意,主要是替换原先的 markup 为 markup_tags, markdown 为 apply_markup:"markdown" 其他不变即可。