Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialWill Anderson
28,683 PointsDjango template tags and filters: template error using |wordcount <=5 (can't parse remainder '<=5' from '<=5'). Why?
Traceback::
Environment:
Request Method: GET
Request URL: http://port-8000-c9y6cyrl64.treehouse-app.com/courses/
Django Version: 1.9.9
Python Version: 3.5.0
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.humanize',
'courses')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware')
Template error:
In template /home/treehouse/workspace/learning_site/courses/templates/courses/course_list.html, error at line 13
Could not parse the remainder: '<=5' from '<=5' 3 :
4 : {% block static %}<link rel="stylesheet" href="{% static 'courses/css/courses.css' %}">{% endblock %}
5 : {% block title %}Available Courses{% endblock %}
6 :
7 : {% block content %}
8 : <div class="cards">
9 : {% for course in courses %}
10 : <div class="card">
11 : <header><a href="{% url 'courses:detail' pk=course.pk %}">{{ course.title }}</a></header>
12 : <div class="card-copy">
13 : {% if course.description|wordcount <=5 %}
14 : {{ course.description }}
15 : {% else %}
16 : {{ course.description|truncatewords:5 }}
17 : {% endif %}
18 : </div>
19 : </div>
20 : {% endfor %}
21 : </div>
22 : {% endblock %}
Traceback:
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/smartif.py" in translate_token
177. op = OPERATORS[token]
During handling of the above exception ('<=5'), another exception occurred:
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/core/handlers/base.py" in get_response
149. response = self.process_exception_by_middleware(e, request)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/core/handlers/base.py" in get_response
147. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/treehouse/workspace/learning_site/courses/views.py" in course_list
8. return render(request, 'courses/course_list.html', {'courses': courses})
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/shortcuts.py" in render
67. template_name, context, request=request, using=using)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/loader.py" in render_to_string
96. template = get_template(template_name, using=using)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/loader.py" in get_template
32. return engine.get_template(template_name, dirs)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/backends/django.py" in get_template
40. return Template(self.engine.get_template(template_name, dirs), self)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/engine.py" in get_template
190. template, origin = self.find_template(template_name, dirs)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/engine.py" in find_template
157. name, template_dirs=dirs, skip=skip,
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/loaders/base.py" in get_template
46. contents, origin, origin.template_name, self.engine,
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/base.py" in __init__
189. self.nodelist = self.compile_nodelist()
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/base.py" in compile_nodelist
231. return parser.parse()
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/base.py" in parse
516. raise self.error(token, e)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/base.py" in parse
514. compiled_result = compile_func(self, token)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/loader_tags.py" in do_extends
267. nodelist = parser.parse()
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/base.py" in parse
516. raise self.error(token, e)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/base.py" in parse
514. compiled_result = compile_func(self, token)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/loader_tags.py" in do_block
241. nodelist = parser.parse(('endblock',))
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/base.py" in parse
516. raise self.error(token, e)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/base.py" in parse
514. compiled_result = compile_func(self, token)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/defaulttags.py" in do_for
886. nodelist_loop = parser.parse(('empty', 'endfor',))
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/base.py" in parse
516. raise self.error(token, e)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/base.py" in parse
514. compiled_result = compile_func(self, token)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/defaulttags.py" in do_if
1027. condition = TemplateIfParser(parser, bits).parse()
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/defaulttags.py" in __init__
959. super(TemplateIfParser, self).__init__(*args, **kwargs)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/smartif.py" in __init__
168. mapped_tokens.append(self.translate_token(token))
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/smartif.py" in translate_token
179. return self.create_var(token)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/defaulttags.py" in create_var
962. return TemplateLiteral(self.template_parser.compile_filter(value), value)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/base.py" in compile_filter
601. return FilterExpression(token, self)
File "/usr/local/pyenv/versions/3.5.0/lib/python3.5/site-packages/django/template/base.py" in __init__
701. "from '%s'" % (token[upto:], token))
Exception Type: TemplateSyntaxError at /courses/
Exception Value: Could parse the remainder: '<=5' from '<=5'
[MOD: added ```python formatting -cf]
Chris Freeman
Treehouse Moderator 68,423 PointsMay try a debug print with {{ course.description|wordcount }}
to see what is being returned to confirm the wordcount itself is working properly.
Chris Freeman
Treehouse Moderator 68,423 PointsTagging Kenneth Love for comment.
1 Answer
Mickey Asavanant
8,237 PointsYou need a space between the symbol <= and 5. Specifically, try
{% if course.description|wordcount <= 5 %} //have a space between = and 5.
I think Django run into a parsing issue if you don't have space between the symbol.
Chris Freeman
Treehouse Moderator 68,423 PointsChris Freeman
Treehouse Moderator 68,423 PointsI'm stumped. The code for the wordcount filter clearly returns an
int
:And the filter docs support your notion of comparison: