Flacon contexte processeurs fonctions
Suivant l'exemple minimal sur le Flacon pages que je suis en train de construire un contexte de processeur:
context_procesor.py
def inflect_this():
def inflectorize(number, word):
return "{} {}".format(number, inflectorizor.plural(word, number))
return dict(inflectorize=inflectorize)
app.py(dans une application en usine)
from context_processor import inflect_this
app.context_processor(inflect_this)
À l'aide d'un précédent de l'inflexion de la fonction qui infléchit un mot basé sur le nombre, la simple j'ai déjà comme un jinja filtre mais je voulais voir si je pouvais le faire en tant que contexte du processeur.
Donné l'exemple à la bootom de la page ici: http://flask.pocoo.org/docs/templating/, cela devrait fonctionner, mais ne le fait pas. J'obtiens:
jinja2.exceptions.UndefinedError UndefinedError: 'inflectorize' is undefined
Je ne comprends pas assez de vous pour voir ce qui se passe. Quelqu'un peut me dire quel est le problème?
EDIT:
app.jinja_env.globals.update(inflectorize=inflectorize)
œuvres d'ajouter des fonctions et semble être de moins en moins de ressources que l'emballage d'une méthode dans une méthode, où l'application.context_processor probablement relais à jinja_env.globals de toute façon.
@app.context_processor
pour décorer inflect_this
? Elle doit être la même chose, mais peut être vaut la peine d'essayer.Je suis de l'importation à partir d'un fichier et à l'aide d'un appfactory, si "application" n'est pas disponible et renvoie une erreur de nom si le décorateur est utilisé. Je suis en train de faire cela plus comme une prolongation. Je pense que je pourrais faire un plan et ensuite de les importer, mais ça ne semble pas correcte.
Si
app
n'est pas disponible alors comment voulez-vous ajouter inflect_this
via app.context_processor
? Qu'est-ce que app
dans votre exemple?Il est dans un autre fichier, le ci-dessus édité pour plus de précisions.
Est le "MODIFIER" à la fin de la réponse que vous avez réglé sur? S'il vous plaît poster séparément comme une réponse si vous avez l'intention d'être un.
OriginalL'auteur blueblank | 2012-12-10
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas si cela répond à votre question, comme je n'ai pas utilisé l'application des usines.
Cependant, j'ai essayé ce à partir d'un plan, et cela fonctionne pour moi. Vous avez juste à utiliser le modèle d'objet dans le décorateur au lieu de la valeur par défaut "app":
thingy/view.py
templates/thingy_test.html
et je vois les attentes de 0,33 $" dans le modèle.
Espère que ça aide!
Cool - laissez-moi savoir si cela fonctionne ou pas. Je suis curieux de savoir.
Ne fonctionne pas pour moi, voir modifier ci-dessus.
+1 pour le soupçon que les
context_processor
décorateur travaille pour les Bleus ainsi que pour Flacon instances.Si j'ai plus d'une fonction qui doit être fait un context_processor. Comment dois-je définir dans mon Python Flacon de Fichier
OriginalL'auteur Rachel Sanders