You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django无法获取单词集合且需实现按字母顺序展示词库的问题求助

Django无法获取单词集合且需实现按字母顺序展示词库的问题求助

嘿,我来帮你搞定这个词典展示的问题~你的需求很清晰:用和记忆游戏同一份数据库,做一个按字母排序的“单词:翻译”词典,咱们一步步来调整现有代码:

首先看你现有代码的小问题:

  1. 目前的查询语句没有做排序,所以单词是按数据库存储顺序展示的,不是字母序
  2. 模板里的单词和翻译各占一行,看起来不像词典的样式

第一步:修改视图层代码,实现按字母排序

你只需要在views.py里给查询结果加上排序规则就行。如果要严格按字母大小写排序(比如大写A开头的单词排在小写a前面),直接用order_by('question');如果想忽略大小写排序(让Apple和apple排在一起),就用Django的Lower函数处理字段:

from django.shortcuts import render
from cards.models import Card
# 忽略大小写排序需要导入这个函数
from django.db.models.functions import Lower

def lexicon(request):
    # 方案1:大小写敏感的字母排序
    card_list = Card.objects.order_by('question')
    
    # 方案2:忽略大小写的字母排序(推荐,更符合词典习惯)
    # card_list = Card.objects.order_by(Lower('question'))
    
    context = {'card_list': card_list}
    return render(request, 'lexicon/lexicon.html', context)

第二步:调整模板,改成“单词:翻译”的词典样式

把模板里分开的两个<p>标签合并成一行,同时加上空数据的提示,避免数据库没数据时页面空落落的:

<main>
    <div class="container-small">
        {% for card in card_list %}
            <p>{{ card.question }}: {{ card.answer }}</p>
        {% empty %}
            <p>暂时还没有添加任何单词哦~</p>
        {% endfor %} 
    </div>    
</main>

额外排查:如果还是无法获取单词集合

要是改完之后还是看不到内容,你可以检查这几点:

  • 确认urls.py里已经正确配置了lexicon的路由,比如:
    from django.urls import path
    from . import views
    
    urlpatterns = [
        # 其他路由...
        path('lexicon/', views.lexicon, name='lexicon'),
    ]
    
  • 检查数据库里有没有实际数据,毕竟空数据库的话循环不会输出内容
  • 确认cards/models.py里的Card模型字段和数据库一致,比如question和answer字段都正确定义了

这样调整后,就能得到一个按字母顺序排列、样式规整的词库页面啦~

备注:内容来源于stack exchange,提问作者Sorin Vintzeanu Vintze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:28:12