Django-wiki安装后创建根文章触发全局标志位置错误求助
解决Django-wiki在Python3.11下渲染文章时的正则表达式错误
问题详情
- 环境:Python 3.11.0、Django 4.0.8、全新虚拟环境部署的django-wiki
- 触发场景:创建标题为"Test"、内容为"Hello"的根文章并保存后,访问首页出现错误
- 核心错误信息:
error at /
global flags not at the start of the expression at position 9
异常位置:C:\python\Lib\re_parser.py,第841行,_parse函数中
模板渲染错误:C:\daas_django_apps\env\Lib\site-packages\wiki\templates\wiki\view.html第7行{% wiki_render article %}
原因分析
Python 3.11对正则表达式的语法检查更严格,不允许全局标志(如g)出现在正则表达式的中间位置,而旧版本的django-wiki存在不符合该规范的正则写法,导致渲染文章时触发解析错误。
解决方案
1. 升级django-wiki到兼容版本
执行以下命令升级到修复该问题的版本(0.10.0及以上版本已修复):
pip install --upgrade django-wiki
升级后重启服务,即可正常渲染文章。
2. 临时手动修复(无法升级时)
找到虚拟环境中django-wiki的正则相关代码文件(路径示例:C:\daas_django_apps\env\Lib\site-packages\wiki\),搜索包含(?g)的正则表达式,将全局标志g移到正则表达式的开头。
例如,将类似r'(?s)(?P<content>.*?)(?g)(?P<footnote>\\[\^].*?\\])'的代码修改为:
r'(?gs)(?P<content>.*?)(?P<footnote>\\[\^].*?\\])'
修改后保存文件,重启服务即可生效。
内容的提问来源于stack exchange,提问作者Jim Zbiegien
相关产品推荐
相关产品推荐

