我有一个 Django 博客。我需要使用 enchant 检查博文中的文本是否为英文,然后使用 api 进行文本纠错。
我在django博客的虚拟环境中安装了api
pip install pyenchant
项目,并将其包含在已安装的应用程序中,但在博客 base.html 中,我尝试加载它并使用它的功能来检查帖子标题是否为英文,但我什么也没做。如何解决这个问题? 这是我的 html 代码:
{% load enchant %}
{% dictionary = enchant.Dict("en_US") %}
<p>{% dictionary.check(post.title) %}</p>
当我运行服务器时没有错误,但是html页面上没有任何内容。 注意:根据 API,它应该是段落标记中的 True of False。 “我在 python shell 中测试了它。”
请您参考如下方法:
你不能这样做。 跟我来:)
pyenchant 中没有模板标签 可以与 django 一起使用(我从文档中学到的)。 您的代码 dictionary = enchant.Dict("en_US") 在 django 后端没有问题,但它也不适合 django 模板。
因此,要实现这一点,您可以创建自定义模板标签,以在您的 Python 代码和模板语言之间建立连接。
您可以按照以下方式操作,它有效:
树:
templatetags
templatetags/__init__.py
templatetags/pyenchant_tags.py
templatetags/pyenchant_tags.py 文件:
import enchant
from django import template
register = template.Library()
@register.simple_tag
def please_enchant_my_string(language, string):
d = enchant.Dict(language)
return d.check(string)
模板部分,我们的标签调用:
{% load pyenchant_tags %}
<div>
{% please_enchant_my_string 'en_US' post.title %}
</div>
