2017-10-17 2 views
1

J'essaie de charger un élément HTML dans mon modèle django, si une application spécifique est définie dans mon fichier settings.py. Mais ça ne marche pas. L'instruction if se comporte comme l'application n'existe pas:Impossible de vérifier INSTALLED_APPS dans le modèle django

  {% if 'myapp.edit_data' in INSTALLED_APPS %} 
       <p> dfsdfsdf </p> 
      {% endif %} 

J'ai aussi essayé avec d'autres applications et je reçois le même comportement. Qu'est-ce que je rate?

+1

Avez-vous passé quelque chose appelé INSTALLED_APPS au contexte du modèle? –

Répondre

3

Vous ne pouvez pas accéder automatiquement aux paramètres tels que INSTALLED_APPS dans le modèle. Vous devez l'ajouter au contexte du modèle.

Par exemple, dans la vue, vous pourriez faire:

from django.conf import settings 

def my_view(request): 
    return render(request, 'my_template.html', {'INSTALLED_APPS': settings.INSTALLED_APPS}) 

Si cette vérification était dans le modèle de base, alors vous voudrez peut-être créer un template context processor au lieu de changer chaque point de vue.

+0

merci, j'ai enlevé le backtick. – Alasdair