ISC :: Tecnológico de Celaya
Traductor Debian GNU/Linux
Organizador FLISoL Celaya
Coordinador Nacional FLISoL desde 2013
Propulsor activo del Software Libre
The Web framework for perfectionists with deadline.
¿ Mucha información ?
¿Que necesitamos?
#!/usr/bin/python
print "Hola mundo"
nombre = "Juan"
edad = 12
peso = 82.5
musica = ("rock", "metal", "clasica")
colores = ["azul", "rojo", "verde"]
usuarios_emails = {
"juan": "juan@gmail.com",
"jorge": "j.torres@gmail.com"
}
def suma(a, b):
return a+b
for i in range(100):
print i
while n > 0:
n = n - 1
if edad > 18:
print "Eres mayor de edad"
else:
print "Lo siento, aun eres un niñato"
Sistema Operativo (GNU/Linux)
Base de Datos
HTTP Server
Python
Virtualenvwrapper
Django 1.4
Djanto-Extensions
ORM
Templates
Views
Django 1.6
South
ORM
Templates
Views
Creando un proyecto
$ django-admin.py startproject mysite
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
Deployment Modo Dev
$ ./manage.py runserver
Validating models...
0 errors found
April 25, 2014 - 11:00:00
Django version 1.6.3, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Hermosas pantallas de depuración
Aplicaciones
$ python manage.py startapp polls
polls/
__init__.py
admin.py
models.py
tests.py
views.py
Validación
$ python manage.py validate
0 errors found
Sincronización
$ python manage.py syncdb
Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'lesthack'):
Email address: lesthack@gmail.com
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
Autenticación
Panel de Administración
models.py
from django.db import models
class encuesta(models.Model):
nombre = models.CharField(max_length=200)
class pregunta(models.Model):
encuesta = models.ForeignKey(encuesta)
pregunta_text = models.CharField(max_length=200)
fecha = models.DateTimeField(auto_now_add = True)
Uso
mipregunta = pregunta.objects.get(id=1)
mipregunta.encuesta.nombre
urls.py
from django.conf.urls import url
from polls import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^otro/$', views.index, name='index')
]
views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hola mundo, estas en la vista index.")
http://localhost:8000/
views.py
def myindex(request):
nombre = 'Jorge Hernandez'
lista = range(0,100)
return render_to_response(
'index.html',
{'nombre': nombre, 'lista': lista},
context_instance=RequestContext(request)
)
templates/index.html
Este es un template
Ejemplo de valor variable: {{ nombre }}
Lista:
{% for elemento in lista %}
- {{ elemento }}
{% endfor %}
admin.py
from django import forms
from django.contrib import admin
from polls.models import *
import datetime
class encuestaAdmin(admin.ModelAdmin):
list_display = ['id', 'nombre']
list_display_links = ['nombre']
search_fields = ['id', 'nombre']
class preguntaAdmin(admin.ModelAdmin):
list_display = ['id', 'encuesta', 'pregunta_text', 'fecha']
list_display_links = ['id']
search_fields = ['id', 'encuesta', 'pregunta_text', 'fecha']
list_filter = ['fecha']
admin.site.register(encuesta, encuestaAdmin)
admin.site.register(pregunta, preguntaAdmin)
South: Migraciones DB
Django-Suit: Interfaz Moderna
Grappelli: Interfaz Moderna
Django Extensions: Plugins
Django Debug Toolbar: Depuración
Django-CMS: CMS personalizable
Django SocialAuth: Autenticación Social
Twitter: @lesthack
Blog: lesthack.com.mx
Email: lesthack@gmail.com
Github: github.com/lesthack