2010-10-16 6 views
2

Je veux ajouter une variable de contexte dans Django, afin que je puisse définir sa valeur par application, ou la laisser vide.Ajouter automatiquement une variable en contexte par application dans Django?

Exemple:

apps/someapp/views.py:

def_context_var('app_name', 'Calendar') 

templates/base.html:

{% if app_name %}You are in {{ app_name }} app.{% endif %} 
.... 
{% if app_name %}Subsections of {{ app_name }}: ...{% endif %} 

Je considère ce qui suit:

  1. Declare une variable dans l'application (dans une vue, ou dans les URL), et faire un processeur de contexte. Mais je ne peux pas comprendre comment extraire cette variable étant donné l'objet de requête.
  2. Mettez les décorateurs sur les vues. Hm, je n'aime pas l'idée: trop de code standard ou de code dupliqué.
  3. # 1 mais mieux: faites des méthodes (comme dans l'exemple ci-dessus) qui sont exécutées au redémarrage du serveur, écrivez les données dans un dict, puis un processeur de contexte récupère le nom de l'application et extrait les données dict. Où dois-je mettre la méthode, la dict, comment le processeur de contexte sait où se trouve l'objet de vue?

Répondre

2

Vous pouvez appeler resolve(request.path) dans un processeur de contexte pour résoudre l'URL en cours. Voir le django documentation on resolve for its return values, en particulier app_name.

+0

Wow. Je pensais qu'il renvoie juste un tuple de fonction, args & kwargs. Les angles morts ... Merci! –

+0

Ah, c'est 1,3. Mmm ... eh bien, j'ai dû utiliser inspect.stack à la place. –

Questions connexes