$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Curso Django
Search
paurosello
November 12, 2012
Technology
2
230
Curso Django
Curso Django ACM 2012
paurosello
November 12, 2012
Tweet
Share
Other Decks in Technology
See All in Technology
Oracle Cloud Infrastructure IaaS 新機能アップデート 2025/09 - 2025/11
oracle4engineer
PRO
0
150
re:Invent2025 コンテナ系アップデート振り返り(+CloudWatchログのアップデート紹介)
masukawa
0
380
JEDAI認定プログラム JEDAI Order 2026 エントリーのご案内 / JEDAI Order 2026 Entry
databricksjapan
0
120
OCI Oracle Database Services新機能アップデート(2025/09-2025/11)
oracle4engineer
PRO
1
200
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
Jakarta Agentic AI Specification - Status and Future
reza_rahman
0
110
re:Invent 2025 ふりかえり 生成AI版
takaakikakei
1
210
ActiveJobUpdates
igaiga
1
110
Reinforcement Fine-tuning 基礎〜実践まで
ch6noota
0
190
LLM-Readyなデータ基盤を高速に構築するためのアジャイルデータモデリングの実例
kashira
0
260
Debugging Edge AI on Zephyr and Lessons Learned
iotengineer22
0
210
学習データって増やせばいいんですか?
ftakahashi
2
410
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
Facilitating Awesome Meetings
lara
57
6.7k
For a Future-Friendly Web
brad_frost
180
10k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Typedesign – Prime Four
hannesfritz
42
2.9k
Why Our Code Smells
bkeepers
PRO
340
57k
Raft: Consensus for Rubyists
vanstee
141
7.2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
How GitHub (no longer) Works
holman
316
140k
Transcript
Curso de Django I Pau Roselló Van Schoor
[email protected]
ACM
Facultad de Informática Universidad Politécnica de Madrid
Contenido ! Introducción ! Modelo ! Vista ! Template !
URLs ! Formulario ! Heroku
ACM Asociación de la Facultad de Informática de la UPM
Puedes contactar con nosotros en: ! Web: http://acm.asoc.fi.upm.es ! Twitter: @acmfiupm ! Búscanos en Facebook y Tuenti Existimos desde 1986
! Introducción ! Modelo ! Vista ! Template ! URLs
! Formulario ! Heroku
¿Aplicación web Django ? ! Protocolo: HTTP ! Lenguaje en el Servidor:
Python ! Lenguajes en el Cliente: HTML, Javascript, CSS
¿ Por qué elegir Django ? ! Desarrollo activo de
la comunidad ! MVC como patrón de desarrollo ! ORM integrado ! Urls organizadas y limpias ! Panel de Administración ! Escrito en Python!
Patrón de desarrollo (MVC) ! Modelo ! Abstracción de los
datos a almacenar definido mediante clases y guardado en la base de datos. ! Vista ! Actúa como el controlador de MVC y decide cual es la información que se le manda al usuario. ! Template ! Define como se presenta la infomación al usuario.
MVT Modelo Clases Datos Métodos Vista Métodos Prepara datos Sesión
Template Html Python
Iniciando un proyecto ! $> virtualenv venv && source venv/bin/activate
! $> pip install django ! $> django-admin.py startproject acmtut ! $> django-admin.py startapp encuestas
Configuración de la base de datos DATABASES = { ’default':
{ 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'db.db’ } }
Instalación de aplicaciones INSTALLED_APPS = ( …, 'encuestas’, ) url(r'^acmtut/',
include('acmtut.urls'))
Ejecutamos el servidor ! $> python manage.py runserver
Zona de administración urls.py from django.contrib import admin admin.autodiscover() urlpatterns
= patterns('’, … (r’ˆadmin/’, include(admin.site.urls)), …) Settings.py INSTALLED_APPS = ( … ’django.contrib.admin’, …)
Iniciar la base de datos ! $> python manage.py syncdb
! Introducción ! Modelo ! Vista ! Template ! URLs
! Formulario ! Heroku
Modelo BD ORM Clase
Modelo Tipos de Campos ! CharField ! DateTimeField ! EmailField
! ImageField ! SlugField Atributos de campo ! Blank ! Null ! Choices ! Default ! Unique
Modelo Simple from django.db import models class Votacion(models.Model): titulo =
models.CharField(max_length=150, primary_key=True) activa = models.BooleanField() fecha = models.DateTimeField(auto_now_add=True) slug = models.SlugField()
Modelo Simple def __unicode__(self): return self.titulo def save(self, *args, **kwargs):
self.slug = slugify(self.titulo) super(Votacion, self).save(*args, **kwargs) admin.site.register(Votacion)
Relaciones ! Muchos a uno ! votacion = models.ForeignKey(Votacion) !
Muchos a muchos ! ingredientes = models.ManyToManyField(Ingrediente) ! Uno a uno ! lugar = models.OneToOneField(Lugar)
Modelo con Relaciones class Voto(models.Model): votacion = models.ForeignKey(Votacion) opcion =
models.BooleanField() fecha = models.DateTimeField(auto_now_add=True) def __unicode__(self): return self.votacion + " " + self.opcion
Contenido ! Introducción ! Modelo ! Vista ! Template !
URLs ! Formulario ! Heroku
Vista Vista Métodos Prepara datos Sesión
Vista ! Recojemos los datos y describimos la lógica de
la vista ! Preparamos los datos a presentar ! Devolvemos la plantilla con los datos recogidos
Vista def inicio(request): return render_to_response( 'portada.html', { 'votaciones' : Votacion.objects.all()
}, )
Vista def activas(request): votaciones = Votacion.objects.filter(activa=True) return render_to_response( 'portada.html', {
’nvotaciones' : votaciones.count(), 'votaciones' : votaciones }, )
! Introducción ! Modelo ! Vista ! Template ! URLs
! Formulario ! Heroku
Template HTML CSS Javascript Lógica Python
Template {% if is_logged_in %} <h1> Bienvenido {{usuario.nombre}} </h1> {%
else %} <h1> Hola desconocido </h1> {% endif %}
Herencia Templates base.html Votacion.html Voto.html
Herencia Templates {% extends “base.html” %} {% block contenido %}
{% for votacion in votaciones %} <h1>{{votacion.titulo}}</h1> <h2>{{votacion.fecha|date:"d/m/Y”}}</h2> {% endfor %} {% endblock %}
! Introducción ! Modelo ! Vista ! Template ! URLs
! Formulario ! Heroku
URL urlpatterns = patterns('', url(r'^activas$', 'encuestas.views.activas', name=’activas'), )
URLs url(r'^votar/(\d)/(\d)$', 'encuestas.views.realizar_voto'), url(r’^votacion/(?P<pk>\d{4})/$’,‘encuestas.views.votacion’
! Introducción ! Modelo ! Vista ! Template ! URLs
! Formulario ! Heroku
Formulario de un Modelo from django.forms import ModelForm class ArticleForm(ModelForm):
class Meta: model = Votacion fields = ('titulo', 'activa')
Vista de Formulario contexto = RequestContext(request) if request.method == 'POST':
form = ArticleForm(request.POST, request.FILES) if form.is_valid(): form.save()
! Introducción ! Modelo ! Vista ! Template ! URLs
! Formulario ! Heroku
Heroku ! Ejecución del servidor de Django. ! Base de
datos. ! Pluguins para control y gestión de la aplicación. ! Actualizaciones rápidas. ! Aumentar los recursos de forma fácil y rápida.
Heroku $> heroku create $> pip install psycopg2 dj-database-url
Heroku $> pip freeze > requirements.txt $> git push heroku
master
Heroku $> heroku run python manage.py syncdb $> heroku open
Heroku ! $> heroku logs (ver los logs de la
aplicacion) ! $> heroku info (información sobre la aplicación) ! $> heroku pg:info (ver informacion sobre la bd)
Repositorio https://github.com/paurosello/tutorialACM
Fin ¿Preguntas? ¿Sugerencias?