11. URLs y Vistas
• El fichero urls.py actúa como puerta de entrada para
las pe1ciones HTTP
• Se definen URLs elegantes mediante expresiones
regulares que redirigen a funciones de views.py
• Cada expresión regular delega en una vista:
• Pe1ción: hfp://dominio.com/fabricante/4
• (r'^fabricante/(.*)/?$', 'dominio.app.views.ficha_fabr')
12. URLs y Vistas
• La función de views.py recibe un objeto especial con
la pe1ción y todos los parámetros de la URL:
• Pe1ción: hfp://dominio.com/fabricante/4
• (r'^fabricante/(.*)/?$', 'dominio.app.views.ficha_fabr')
def ficha_fabr(request, fabricante_id):
f = Fabricantes.objects.get(id=fabricante_id)
ps = Productos.objects.filter(fabricante=f)
return render_to_response(‘fabr.html’,
{‘fabricante’: f, ‘productos’: ps})
16. Sistema de Templates
Herencia de templates
<html>
<head>
<title>{% block titulo %}Mi web{% endblock %}</title>
</head>
<body>
<div id=quot;menuquot;>
{% block menu %}
<ul>
<li><a href=quot;/quot;>Home</a></li>
<li><a href=quot;/blog/quot;>Blog</a></li>
</ul>
{% endblock %}
</div>
<div id=quot;contenidoquot;>
{% block contenido %}{% endblock %}
</div>
</body>
</html>
17. Sistema de Templates
Herencia de templates
{% extends quot;base.htmlquot; %}
{% block titulo %}Mi blog{% endblock %}
{% block contenido %}
...
{% endblock %}
18. Sistema de Templates
Filtros
• Permiten trabajar sobre los datos recibidos
{{ nombre|default:quot;<sin nombre>quot; }}
{{ productos|length }}
{{ comentario|striptags }}
• Posibilidad de crear filtros propios
23. Formularios
• Alterna1va: Formularios a par1r del modelo
from django.db import models
from django.forms import ModelForm
class Contacto(models.Model):
nombre = models.CharField(max_length=100)
email = models.EmailField()
password = models.PasswordField()
...
class ContactoParcialForm(ModelForm):
class Meta:
model = Contacto
fields = ('nombre', 'email')
28. django.contrib.admin
• Genera una aplicación ABM sobre un modelo de datos
1. Añadir la aplicación al fichero seYngs.py
INSTALLED_APPS = (
...
'django.contrib.admin',
)
2. Añadir la url de acceso al fichero urls.py
from django.contrib import admin
admin.autodiscover()
urlpatterns += patterns(‘’,
...
(r'^admin/(.*)', admin.site.root),
)