0

我有一个模型,我试图根据 url 中传递的参数进行过滤,然后通过模板显示过滤后的对象,但我不知道我做错了什么。

这是 urls.py:

url(r'^courses/(?P<course_code>\w+)/$', views.course, name="course"),

这是视图:

from website.models import Course

def course(request, course_code):
    current_course = Course.objects.filter(short_title='course_code')
    template = loader.get_template('website/course.html')
    context = Context({
        'current_course': current_course,
    })
    return HttpResponse(template.render(context))

这是模型:

class Course(models.Model):
    title = models.CharField(max_length=200)
    short_title = models.CharField(max_length=5)
    course_type = models.CharField(max_length=100)
    start_date = models.DateTimeField()
    end_date = models.DateTimeField()
    fee = models.IntegerField()
    places = models.IntegerField()
    venue = models.CharField(max_length=200)
    description = models.TextField()
    short_description = models.TextField()
    age_low = models.IntegerField()
    age_high = models.IntegerField()

这是模板:

{% if current_course %}

    {% for course in current_course %}

        {{ current_course.title }}

    {% endfor %}

{% else %}
    <p>Sorry, that course doesn't exist.</p>
{% endif %} 

当我加载页面 /courses/CR1 (带有 short_title="CR1" 的课程肯定存在,因为它在另一个我没有过滤但只显示所有课程的模板上呈现良好),它给了我“对不起,那个课程不存在。”

谁能看到我做错了什么?

4

1 回答 1

3

在这一行:

current_course = Course.objects.filter(short_title='course_code')

您正在检查具有确切文本“course_code”的课程标题。您的意思是使用变量的值course_code

current_course = Course.objects.filter(short_title=course_code)
于 2013-03-27T11:57:29.760 回答