Django variabili


Esempio

È possibile accedere alle variabili fornite nel contesto della vista utilizzando la notazione doppia coppia:

Nel tuo views.py :

class UserView(TemplateView):
  """ Supply the request user object to the template """

  template_name = "user.html"

  def get_context_data(self, **kwargs):
    context = super(UserView, self).get_context_data(**kwargs)
    context.update(user=self.request.user)
    return context

In user.html :

<h1>{{ user.username }}</h1>

<div class="email">{{ user.email }}</div>

La notazione dot avrà accesso a:

  • le proprietà dell'oggetto, ad es. user.username sarà {{ user.username }}
  • ricerche nel dizionario, ad esempio request.GET["search"] sarà {{ request.GET.search }}
  • metodi senza argomenti, ad esempio users.count() sarà {{ user.count }}

Le variabili del modello non possono accedere ai metodi che accettano argomenti.

Le variabili possono anche essere testate e ripetute:

{% if user.is_authenticated %}
  {% for item in menu %}
    <li><a href="{{ item.url }}">{{ item.name }}</a></li>
  {% endfor %}
{% else %}
  <li><a href="{% url 'login' %}">Login</a>
{% endif %}

Si accede agli URL utilizzando il formato {% url 'name' %} , dove i nomi corrispondono ai nomi nel tuo urls.py

{% url 'login' %} - Probabilmente verrà visualizzato come /accounts/login/
{% url 'user_profile' user.id %} - Gli argomenti per gli URL sono forniti in ordine
{% url next %} : gli URL possono essere variabili