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

Django模板渲染报错,如何按指定课程、学期、科目筛选渲染试题

问题修复方案

1. 核心逻辑错误修复(views.py)

你当前的ModelQuestions视图筛选逻辑错误:传入的id是Subject表的主键,你却用它来匹配TuModelQuestions的date字段,导致查不到对应试题。修改如下:

# =============MODEL QUESTIONS================
class ModelQuestions(View):
    def get(self,request,id):
        # 这里id是Subject的主键
        subject_obj = Subject.objects.get(id=id)
        # 按关联的subject字段筛选,支持可选的年份参数
        year = request.GET.get('year', None)
        if year:
            model_questions = TuModelQuestions.objects.filter(subject=subject_obj, date=int(year))
        else:
            # 默认取该科目下所有试题,可根据需求调整为默认取最新年份
            model_questions = TuModelQuestions.objects.filter(subject=subject_obj)
        return render(request, 'app/model-questions.html',{'subject':subject_obj, 'model_questions':model_questions})

2. 模板动态渲染修改(model-questions.html)

你当前模板写死了静态图片,需要改为动态渲染查询到的试题,同时给年份按钮加上跳转参数实现按年份筛选:

{% extends 'app/subject-base.html' %}
{% load static %}
{% block model-questions %}
    <div class="model-question">
        <div class="container">
            <div class="row">
                <div class="col-lg-12">
                    <!-- 给年份按钮加参数,点击后筛选对应年份试题 -->
                    <a href="?year=2070"><button type="button" class="btn btn-outline-light">2070</button></a>
                    <a href="?year=2071"><button type="button" class="btn btn-outline-light">2071</button></a>
                    <a href="?year=2072"><button type="button" class="btn btn-outline-light">2072</button></a>
                </div>
            </div>
            <div class="questions-year">
            <div class="row">
                <div class="col-lg-12">
                    {% for question in model_questions %}
                    <div class="model-questions-box">
                        <!-- 动态渲染试题图片,注意用.url获取图片路径 -->
                        <img src="{{ question.model_question.url }}" alt="{{ subject.subject_name }}-{{ question.date }}年试题" class="img-fluid">
                    </div>
                    {% empty %}
                    <p class="text-light">该年份暂无对应试题</p>
                    {% endfor %}
                </div>
            </div>
            </div>
        </div>
        
    </div>
{% endblock model-questions %}

3. 其他配置修正

  • 你的应用urls.py末尾缺少]闭合符,直接补上即可。
  • 确保settings.py中配置了媒体文件的访问路径,否则图片无法正常加载:
    # settings.py末尾添加
    MEDIA_URL = '/media/'
    MEDIA_ROOT = BASE_DIR / 'media'
    
  • 项目根urls.py中添加媒体文件的路由配置:
    from django.conf import settings
    from django.conf.urls.static import static
    
    urlpatterns = [
        # 你原有路由配置
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:15:03