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

多语言Wagtail CMS:如何在首页展示3条最新单语言文章

筛选特定语言的最新3篇文章解决方案

核心思路

要实现只展示某一种语言的最新3篇文章,关键是在查询时添加语言过滤条件,结合原有的排序和切片逻辑即可。

前提条件

确保你的Insight模型中存在用于标识语言的字段,示例定义如下:

from django.db import models

# 定义支持的语言选项
LANGUAGE_CHOICES = (
    ('en', 'English'),
    ('zh-cn', '简体中文'),
    # 可添加更多语言...
)

class Insight(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    date = models.DateTimeField(auto_now_add=True)
    language = models.CharField(max_length=10, choices=LANGUAGE_CHOICES)
    # 其他业务字段...

具体实现

情况1:根据用户当前语言自动展示

如果要匹配用户访问时的语言设置(基于Django国际化配置),可借助get_language()获取当前语言代码:

from django.utils.translation import get_language

def get_context(self, request):
    context = super().get_context(request)
    # 获取当前请求对应的语言代码
    current_language = get_language()
    # 筛选对应语言的文章,按日期倒序取最新3篇
    latest_insights = Insight.objects.filter(language=current_language).order_by('-date')[:3]
    context['latest_insights'] = latest_insights
    return context

情况2:固定展示某一种语言

如果不需要根据用户语言切换,只想固定展示某一种语言的文章,直接指定语言值即可:

def get_context(self, request):
    context = super().get_context(request)
    # 固定筛选简体中文的文章,可替换为你需要的语言标识
    latest_insights = Insight.objects.filter(language='zh-cn').order_by('-date')[:3]
    context['latest_insights'] = latest_insights
    return context

可选优化:无对应语言时的降级处理

如果担心当前语言没有文章,可添加降级逻辑,比如默认取英文文章:

from django.utils.translation import get_language

def get_context(self, request):
    context = super().get_context(request)
    current_language = get_language()
    
    # 先尝试获取当前语言的文章
    latest_insights = Insight.objects.filter(language=current_language).order_by('-date')[:3]
    
    # 如果当前语言无文章,取默认语言(英文)的文章
    if not latest_insights.exists():
        latest_insights = Insight.objects.filter(language='en').order_by('-date')[:3]
    
    context['latest_insights'] = latest_insights
    return context

内容的提问来源于stack exchange,提问作者Taneef

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 06:54:59