django - 无法过滤对象并转移到模板

时间:2013-03-27 11:53:35

标签: django

我有一个模型,我试图根据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”的课程肯定存在,因为它在另一个我没有过滤但只显示所有课程的模板上呈现正常),它给了我“对不起那个课程不存在。“

谁能看到我做错了什么?

1 个答案:

答案 0 :(得分:3)

在这一行:

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

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

的值
current_course = Course.objects.filter(short_title=course_code)