今天稍微優化一些前端,再加上題目詳情(來源檔案、書籍)和切換答案顯示的功能。
<h5>搜尋結果</h5>
↓
<h5>{{ result_word }}</h5>
# views.py
def search():
...
if query:
# 把原先的"搜尋結果"字樣改為搜尋後才出現,沒有查到的話則出現"查無結果"
result_word = "查詢結果"
for item in KNOWLEDGE_BASE:
if (...):
search_results.append({
...
"book_source": item.get("來源書籍", ""),
"page_number": item.get("頁次", ""),
"source_filename": item.get("來源檔案", ""),
"answer": item.get("答案", "")
})
if search_results == []:
result_word = "查無結果"
else: ...
return render_template(
...
result_word=result_word,
# 來源檔案路徑
source_path=os.path.join( "來源資料夾路徑" )
)
<!-- index.html -->
<!-- 搜尋結果區域 -->
<div>
<div>
<div>
<h5>{{ result_word }}</h5>
{% if results %}
<button id="toggle-answer">顯示答案</button>
</div>
<div id="search-results">
...
<!-- 加入題目詳情區塊 -->
<div class="question-info">
{% for source in result.source_filename %}
<a href={{ source_path }}/{{ source }}
target="_blank">{{ source }}
</a>
{% endfor %}
{{ result.book_source }}
p.{{ result.page_number }}
</div>
<ul>
{% set labels = ['A', 'B', 'C', 'D'] %}
{% for option in result.options %}
<!-- 如果這個選項是答案,就加上 class="answer" 屬性 -->
{% if option == result.answer %}
<li class="answer">({{ labels[loop.index0] }}) {{ option }}</li>
{% else %}
<li>({{ labels[loop.index0] }}) {{ option }}</li>
{% endif %}
{% endfor %}
</ul>
</div>
{% endfor %}
{% endif %}
</div>
</div>
</div>
.answer_highlight {
color: var(--bs-blue);
font-weight: bold;
}
<!-- jquery cdn -->
<script>
$(document).ready(function () {
$('#toggle-answer').on('click', function () {
$('.answer').toggleClass('answer_highlight');
if ($(this).text() === "顯示答案") {
$(this).text("隱藏答案");
} else {
$(this).text("顯示答案");
}
});
});
</script>