如何将Django视图循环输出到终端的同义词数据展示在网页上?
实现网页展示文本单词同义词功能
1. 修改视图函数(view.py)
原代码仅在终端打印结果,我们需要把同义词数据结构化后传递给模板:
def home_view(request): synonym_results = [] # 存储要展示到网页的同义词数据 original_text = "" if request.method == "POST": original_text = request.POST["translate"] translator = Translator() translate_text = translator.translate(original_text, src='auto', dest='en') processed_text = translate_text.text.lower().replace('.', '') word_list = processed_text.split() for word in word_list: synonyms = get_some_word_synonyms(word) kk_word = translator.translate(word, src='auto', dest='en').text if synonyms: # 批量翻译同义词并整理成列表 translated_synonyms = [ translator.translate(syn, src='auto', dest='en').text for syn in synonyms ] # 将单词和同义词存入结果列表 synonym_results.append({ 'word': kk_word, 'synonyms': translated_synonyms }) # 把数据传给模板渲染 return render(request, 'index.html', { 'synonym_results': synonym_results, 'original_text': original_text })
2. 修改模板文件(index.html)
添加输入表单,并通过模板语法循环展示同义词结果:
<!DOCTYPE html> <html> <head> <title>同义词查询工具</title> </head> <body> <h1>文本同义词查询</h1> <!-- 输入表单 --> <form method="POST"> {% csrf_token %} <textarea name="translate" rows="5" cols="80" placeholder="输入要查询的文本...">{{ original_text }}</textarea> <br> <button type="submit">查询同义词</button> </form> <!-- 展示查询结果 --> {% if synonym_results %} <h2>查询结果</h2> {% if original_text %} <p>{{ original_text }}</p> {% endif %} {% for item in synonym_results %} <p>{{ item.word }}的同义词是:</p> <pre> {% for syn in item.synonyms %} {{ syn }} {% endfor %} </pre> {% endfor %} {% endif %} </body> </html>
关键说明
- 视图中新增
synonym_results列表,将每个单词及其同义词整理成字典格式,避免终端打印,直接传递给模板。 - 模板使用Django模板标签循环遍历结果,完全按照你想要的格式展示内容。
- 表单保留了输入文本的回显,方便用户修改重新查询。
内容的提问来源于stack exchange,提问作者Qal Jagdai
相关产品推荐
相关产品推荐

