2010-08-13 7 views
1

J'ai un errror: 'run_target' est pas une bibliothèque de balises valide: Template Library run_target introuvable, a essayé django.templatetags.run_targetfiltre modèle Django personnalisé ne peut pas travailler

Je ne sais pas pourquoi ça ne marche pas, même si j'ajoute 'db.templatefilters' ça ne marche pas trop ... Quelqu'un peut-il m'aider? Thank you :)

Ci-dessous ma structure de fichier:

db/ 
    models.py 
    templatefilters/ 
     __init__.py 
     run_target.py 
templates/ 
    run.html 

run_target.py

from django import template 
register = template.Library() 

@register.simple_tag 
def dictKeyLookup(the_dict, key): 
     return the_dict[key] 

run.html

{% extends "index.html" %} 
**{% load run_target %}** 
{% block content %} 
<div style="margin-left:150px; margin-top:10px"> 
<a href="/home">Home</a> >> <b>run</b> 
</div> 
<form name="form" method="post"> 
<br> 
<input type="submit" value="Delete" style="margin-left:149px; width:80px; height:30px"> 
<table border="1"; style="margin-left:150px; border-collapse:collapse;margin-top:10px"; cellpadding="4" borderColor=black> 

{% for run in run_list %} 
    <tr> 
    <td>{% dictKeyLookup target_dict run.id %}</td> 
    </tr> 
{% endfor %} 
</table> 
</form> 
{% endblock %} 

Répondre

9

est-db dans votre milieu INSTALLED_APPS?

Si oui, alors il semble que les deux autres choses que vous manque, ce sont:

  • un fichier __init__.py dans votre dossier db lui-même (vous avez un dans votre répertoire templatefilters, mais pas son parent répertoire)
  • le dossier templatefilters doit être appelé templatetags (voir la section Code layout de la documentation).

Soit dit en passant, db est pas un très bon nom pour une application - appeler quelque chose qui identifie de plus près ce qu'il fait.

+0

merci pour votre réponse, je ne sais pas le nom du dossier 'templatetags' ne peut pas être changé, merci encore :) – LoveTW

+11

et n'oubliez pas de redémarrer le serveur ... semble trivial, mais c'était mon problème –

+0

Redémarrer le serveur a fonctionné pour moi. –

0

Si tout est fait comme dans la documentation:

  • initialisation .py dans le dossier application et templatetags l'intérieur du dossier
  • nom de l'application dans la section INSTALLED_APPS de settings.py

Ensuite, le problème peut être résolu en redémarrant le serveur, si vous avez codé le module avec les nouveaux tags/filtre pendant que le serveur était en cours d'exécution.

Questions connexes