Django-fr

Forum

#1 31-10-2014 09:46:02

luckyboss1
Membre
Inscription : 31-10-2014
Messages : 1

Invalid filter lors du passage dev/prod

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

#2 02-11-2014 20:01:51

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : Invalid filter lors du passage dev/prod

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

Pied de page des forums