首页 > 解决方案 > 将过滤后的数据传递给模板时出错。未找到反向。已尝试 1 种模式。应该使用什么查询来避免此错误?

问题描述

我正在尝试创建一个显示课程中所有子课程的动态 url。为此,我通过 url 传递课程名称并过滤子课程以仅发送用于本课程的课程。但是我似乎找不到正确的查询来过滤和传递数据。

我试图按照官方 Django 文档和搜索堆栈来寻找答案,但什么也没找到。我的实验也没有得到任何结果。

观点是

def subcourse(request, course):
    if request.method == 'GET':
        course = Course.objects.get(slug=course)
        subcourses = Subcourse.objects.all().filter(course=course)
        context = {'subcourses': subcourses}
        return render(request, 'subcourse.html', context)

我的模型是:

class Course(models.Model):
    slug = models.SlugField()
    title = models.CharField(max_length=120)
    thumbnail = models.ImageField(
        upload_to='images/courses',
        null=True,
        blank=True
        )
    position = models.IntegerField()

    def __str__(self):
        return self.title

class Subcourse(models.Model):
    slug = models.SlugField()
    title = models.CharField(max_length=120)
    course = models.ForeignKey(Course, on_delete=models.SET_NULL, null=True)
    thumbnail = models.ImageField(
        upload_to='images/subcourses',
        null=True,
        blank=True)
    position = models.IntegerField()

    def __str__(self):
        return self.title   

这是我的 sub course.html 模板的相关部分:

    {% for subcourse in subcourses %}
    <a href="{% url 'subcourse' lesson.slug %}">
        <div class="Training_types_cont">
            <img class="Training_types_img" src="{{subcourse.thumbnail.url}}">
            <span class="Training_types_txt"> {{subcourse.title}} </span>
        </div>
    </a>
    {% endfor %}

相关网址是:

path('training/<slug:course>', views.subcourse, name='subcourse')

当前的错误消息是

Reverse for 'subcourse' with arguments '('',)' not found. 1 pattern(s) tried: ['training/(?P<course>[-a-zA-Z0-9_]+)$']

我已阅读有关查询和过滤器的文档,但似乎找不到我的错误。

标签: djangodjango-modelsdjango-views

解决方案


推荐阅读