gpt4 book ai didi

python - 在 Django 中使用 Flash 文本

转载 作者:行者123 更新时间:2023-12-04 07:54:12 25 4
gpt4 key购买 nike

我正在尝试使用 flash text在 Django 中。我认为KeyWordProcessor应该只调用一次。所以我在 settings.py 文件中将它定义为:
设置.py

KEYWORD_PROCESSOR = None
然后我调用函数 KeywordProcessor()在应用程序上这样启动:
应用程序.py
from django.apps import AppConfig

class MywebappConfig(AppConfig):
name = 'mywebapp'

def ready(self):
import mywebapp.signals
from flashtext import KeywordProcessor
from django.conf import settings
from mywebapp.utils import add_all_kewords_to_flash_text
import threading

settings.KEYWORD_PROCESSOR = KeywordProcessor()
add_all_kewords_to_flash_text()

t1 = threading.Thread(target=add_all_kewords_to_flash_text)
t1.start()
utils.py
def add_keyword_to_flash_text(keyword_obj):

if not settings.KEYWORD_PROCESSOR:
raise ValueError("Flash text is None")

added = settings.KEYWORD_PROCESSOR.add_keywords_from_dict(
{keyword_obj.keyword: [keyword_obj.keyword]+keyword_obj.tags}
)


def add_all_kewords_to_flash_text():
add_all_kewords = [add_keyword_to_flash_text(k) for k in KeyWord.objects.all()]
但我收到此错误: 值错误:Flash 文本为无

最佳答案

设置文件用于定义常量,您不应该尝试改变常量(即它是不可变的)。
加载后无法更改设置。所以试图做

settings.KEYWORD_PROCESSOR = KeywordProcessor()
不会工作。
仔细看 the documentation
您可能最好编写一个类来处理此问题,并在 app config ready 方法中启动该类。
class MyKeywordProcessor:
def __init__(self):
self.keyword_processor = KeywordProcessor()
然后在应用程序配置中
class MywebappConfig(AppConfig):
name = 'mywebapp'

def ready(self):
...

keyword_processor = MyKeywordProcessor()
add_all_kewords_to_flash_text(keyword_processor)
...
如您所见,我已将关键字处理器传递给您的 add_all_kewords_to_flash_text函数,它是 KeywordProcessor 对象的实例。

关于python - 在 Django 中使用 Flash 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66789324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com