Vous n'êtes pas identifié(e).
Bonjour,
J'ai développé une application que j'ai ensuite deployé. Jusque là pas de soucis.
Mais par la suite, j'ai fait évolué cette application et lors de la mise a jour de l'application déployée, j'ai plusieurs "TemplateSyntaxError : Invalid filter" qui sont apparues à l'utilisation de filtre personnalisé
Il n'y avait aucun problème dans l'environnement de dev django, mais surtout, j'utilisais deja des filtres custom dont certains sont dans les memes fichiers que les nouveaux qui ne sont pas reconnus.
Mes filtres se trouvent dans utils.templatetags.extras. utils est bien déclaré dans le fichier settings et extras contient d'autres filtres qui eux sont reconnus et ne provoquent pas d'erreur.
En Dev, j'utilise Linux avec Django. En prod, c'est un serveur Windows 7 avec Apache 2.4 et MySQL 5.6
J'ai essayé d'importer et d'essayer mes filtres manuellement avec le shell de django sur le serveur de production, tout fonctionne parfaitement.
D'ailleurs en utilisant add_to_builtins(), le filtre est bien importé
L'arborescence:
|project
|ism
-settings.py (contient ism.utils)
|utils
|templatetags
-__init__.py
-extras.py
|templates
|site
-list.html (contient {% load extras %})
Voila l'erreur exacte:
Environment:
Request Method: GET
Request URL: http://localhost:8000/ism/sites/list
Django Version: 1.6
Python Version: 2.7.8
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_extensions',
'south',
'ism.core',
'ism.supervision',
'ism.utils')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware')
Template error:
In template C:\Apache\project\templates\site\list.html, error at line 31
Invalid filter: 'at_least_one_have_alert'
21 :
22 :
23 : {% block content %}
24 :
25 : {% if site_groups %}
26 : <div class="panel-group" id="sites_list">
27 : {% for site_group in site_groups %}
28 : <div class="panel panel-default">
29 : <div class="panel-heading">
30 : <h4 class="panel-title" style="width:50%;">
31 : {% if site_group.site_set.all|at_least_one_have_alert %}
32 : <span
33 : class="glyphicon glyphicon-bell text-danger"
34 : title="{% trans 'At least one site in this group have a unacquired alert' %}">
35 : </span>
36 : {% else %}
37 : <span
38 : class="glyphicon glyphicon-bell text-success"
39 : title="{% trans 'no site in this group have a unacquired alert' %}">
40 : </span>
41 : {% endif %}
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
139. response = response.render()
File "C:\Python27\lib\site-packages\django\template\response.py" in render
105. self.content = self.rendered_content
File "C:\Python27\lib\site-packages\django\template\response.py" in rendered_content
80. template = self.resolve_template(self.template_name)
File "C:\Python27\lib\site-packages\django\template\response.py" in resolve_template
56. return loader.select_template(template)
File "C:\Python27\lib\site-packages\django\template\loader.py" in select_template
180. return get_template(template_name)
File "C:\Python27\lib\site-packages\django\template\loader.py" in get_template
138. template, origin = find_template(template_name)
File "C:\Python27\lib\site-packages\django\template\loader.py" in find_template
127. source, display_name = loader(name, dirs)
File "C:\Python27\lib\site-packages\django\template\loader.py" in __call__
43. return self.load_template(template_name, template_dirs)
File "C:\Python27\lib\site-packages\django\template\loader.py" in load_template
49. template = get_template_from_string(source, origin, template_name)
File "C:\Python27\lib\site-packages\django\template\loader.py" in get_template_from_string
149. return Template(source, origin, name)
File "C:\Python27\lib\site-packages\django\template\base.py" in __init__
125. self.nodelist = compile_string(template_string, origin)
File "C:\Python27\lib\site-packages\django\template\base.py" in compile_string
153. return parser.parse()
File "C:\Python27\lib\site-packages\django\template\base.py" in parse
278. compiled_result = compile_func(self, token)
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in do_extends
215. nodelist = parser.parse()
File "C:\Python27\lib\site-packages\django\template\base.py" in parse
278. compiled_result = compile_func(self, token)
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in do_block
190. nodelist = parser.parse(('endblock',))
File "C:\Python27\lib\site-packages\django\template\base.py" in parse
278. compiled_result = compile_func(self, token)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in do_if
942. nodelist = parser.parse(('elif', 'else', 'endif'))
File "C:\Python27\lib\site-packages\django\template\base.py" in parse
278. compiled_result = compile_func(self, token)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in do_for
806. nodelist_loop = parser.parse(('empty', 'endfor',))
File "C:\Python27\lib\site-packages\django\template\base.py" in parse
278. compiled_result = compile_func(self, token)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in do_if
941. condition = TemplateIfParser(parser, bits).parse()
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in __init__
874. super(TemplateIfParser, self).__init__(*args, **kwargs)
File "C:\Python27\lib\site-packages\django\template\smartif.py" in __init__
163. mapped_tokens.append(self.translate_token(token))
File "C:\Python27\lib\site-packages\django\template\smartif.py" in translate_token
174. return self.create_var(token)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in create_var
877. return TemplateLiteral(self.template_parser.compile_filter(value), value)
File "C:\Python27\lib\site-packages\django\template\base.py" in compile_filter
360. return FilterExpression(token, self)
File "C:\Python27\lib\site-packages\django\template\base.py" in __init__
571. filter_func = parser.find_filter(filter_name)
File "C:\Python27\lib\site-packages\django\template\base.py" in find_filter
366. raise TemplateSyntaxError("Invalid filter: '%s'" % filter_name)
Exception Type: TemplateSyntaxError at /sites/list
Exception Value: Invalid filter: 'at_least_one_have_alert'
En vous remerciant d'avance.
Dernière modification par luckyboss1 (31-10-2014 10:17:50)
Hors ligne
Relance ton apache. Il est possible que tu n'aies pas rechargé les sources alors que les templates sont (par défault) interprétés à la volée et donc peut-être avec une vieille version de ton code sans le template tag.
Hors ligne