我有一个模型,我试图根据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”的课程肯定存在,因为它在另一个我没有过滤但只显示所有课程的模板上呈现正常),它给了我“对不起那个课程不存在。“
谁能看到我做错了什么?
答案 0 :(得分:3)
在这一行:
current_course = Course.objects.filter(short_title='course_code')
您正在使用确切的文字“course_code”检查课程标题。您的意思是使用变量course_code
:
current_course = Course.objects.filter(short_title=course_code)