Crear una modificación común en TierraAdentro - rmeruane/CC5402-TierraAdentro GitHub Wiki

Cómo agregar un nuevo template y vista en el proyecto TierraAdentro

  • En el archivo ta/urls.py agregar el nuevo patrón al view que se creará:
urlpatterns = patterns('tierraadentro.views',
	# otros patrones
        url(r'^new_view/$', 'new_view', name='new_view'),
)
  • Crear un nuevo archivo con un nombre representativo e importarlo en el archivo tierraadentro/views.py
# resto del archivo views.py
from views_new_view import new_view
  • Implementar nuevo view en el archivo creado (tierraadentro/views_new_view.py). En este ejemplo, se redirigirá al index.
#-*- coding: UTF-8 -*-
# Se recomienda utilizar esta primera línea para poder escribir acentos y no tener problemas de codificación en los archivos

from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect

def mi_tierra_adentro(request):
    return HttpResponseRedirect(reverse('index'))

Si se desea agregar un nuevo template, se debe crear un nuevo archivo en la carpeta templates. En este caso, usaremos un archivo new_view.html que sólo extenderá del archivo template base de todas las plantillas, base/base.html.

{% extends "base/base.html" %}
{% load staticfiles %}

Modificaremos el view para que, en caso de estar autenticado, se vea new_view.

#-*- coding: UTF-8 -*-
# Se recomienda utilizar esta primera línea para poder escribir acentos y no tener problemas de codificación en los archivos

from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from tierraadentro.utils import append_user_to_response

def new_view(request):
    if request.user.is_anonymous():
    	return HttpResponseRedirect(reverse('index'))
    else:
    	return append_user_to_response(request, 'new_view.html')

Se recomienda utilizar la función append_user_to_response ubicada en el archivo tierraadentro/utils.py en vez de render_to_response, ya que ésta siempre agrega la variable context al response, la que es necesaria para ver en toda vista el contenido común cargado por los Context Processors implementados.

Con esto, al estar autenticado e ir a la URL http://localhost:8000/new_view/ en el navegador, se redirigirá a http://localhost:8000/new_view/ y se mostrarán los contenidos base del sitio.