Django Variables


Ejemplo

Se puede acceder a las variables que ha proporcionado en el contexto de su vista usando la notación de doble refuerzo:

En tus 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

En user.html :

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

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

La notación de puntos tendrá acceso:

  • propiedades del objeto, por ejemplo, user.username será {{ user.username }}
  • búsquedas de diccionario, por ejemplo, request.GET["search"] será {{ request.GET.search }}
  • los métodos sin argumentos, por ejemplo, users.count() serán {{ user.count }}

Las variables de la plantilla no pueden acceder a los métodos que toman argumentos.

Las variables también pueden ser probadas y repartidas en:

{% 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 %}

Se accede a las URL utilizando el formato {% url 'name' %} , donde los nombres corresponden a los nombres en urls.py

{% url 'login' %} - Probablemente se procesará como /accounts/login/
{% url 'user_profile' user.id %} - Los argumentos para las URL se proporcionan en orden
{% url next %} - Las URL pueden ser variables