Está en la página 1de 80

Instalacin

Configuracin del ambiente de trabajo: Cdigo Python


Python2.7.4, Django1.5.1, MySQL5.x, CRUD completo Ver actualizaciones u otros trabajos en http://es.scribd.com/asullom

consulting

submit

2013 Angel Sullon | @asullom | Last update 23-04-2013 | Per

Objetivos

Instalar y codear con Django de la forma correcta

Django es el entorno de desarrollo web para perfeccionistas con lmites de tiempo

@asullom>Configuracin

CODEADORES WINDOWS

Resumen de las tareas Previos


Codeadores (terminales locales)

https://t.co/0FIcp9Z4JT

1. Instalacin de Sublime Text2 2. Instalacin de Xampp con los servicios de mysql como mnimo, necesario solo si va usar MySQL5.x
http://es.scribd.com/doc/144084648/Devteam-config-codigo-previos-pdf

3. Instalacin de Django1.5.1 con Python2.7.4 4. Activacin de mdulo admin/ de django con MySQL 5. CRUD mediante admin/ de Django 6. CRUD personalizado (WebDev Professional with Dj_1_5_1) 7. Instalacin de Django1.5.1 con Python3.3.1 (TODO Error MySQLdb)

3.1. Instale python 3.2. Instale easy_install y pip 3.3. Instale Django 1.5.1 3.4. Cree el proyecto reune en d:\dev\apps-curso\ 3.5. Agregue la aplicacin clases 3.6. Instalacin del API para la conexin a MySQL

3. INSTALACIN DE DJANGO1.5.1 CON PYTHON2.7.4

Pgina de python

@asullom>Configuracin

3.1. Instale python

@asullom>Configuracin

Python instalado

@asullom>Configuracin

Python\Scripts se crea al instalar easy_install o pip

@asullom>Configuracin

3.2. Instale easy_install y pip


https://pypi.python.org/pypi/setuptools#downloads

Ver gua: http://pythonhosted.org/distribute/easy_install.html

@asullom>Configuracin

Instale setuptools-0.6c11.win32-py2.7.exe

Finalmente, agregue en el Path C:\Python27\Scripts\

@asullom>Configuracin

Instalacin de pip

@asullom>Configuracin

3.3. Instale Django 1.5.1


https://www.djangoproject.com/ casi no est disponible, entonce

Sino descarga con pip, hgalo manualmente de https://www.djangoproject.com/download

@asullom>Configuracin

3.4. Cree el proyecto reune en d:\dev\apps-curso\

django-admin.py startproject reune

@asullom>Configuracin

Ejecute
python manage.py runserver

@asullom>Configuracin

3.5. Agregue el mdulo o app clases


python manage.py startapp clases

@asullom>Configuracin

3.6. Instalacin del API para la conexin a MySQL>Descarga


https://pypi.python.org/pypi/MySQL-python

@asullom>Configuracin

Instalacin de MySQL-python-1.2.4.win32-py2.7.exe

@asullom>Configuracin

Repaso
Crear el proyecto reune d:\dev\apps-curso>django-admin.py startproject reune d:\dev\apps-curso>cd reune d:\dev\apps-curso\reune>dir reune{__init__.py,settings.py,urls.py,wsgi.py} manage.py Crear la app clases dentro de reune d:\dev\apps-curso\reune>python manage.py startapp clases d:\dev\apps-curso\reune>cd clases d:\dev\apps-curso\reune\clases>dir clases{__init__.py,models.py,tests.py,views.py}} d:\dev\apps-curso\reune\clases>cd.. d:\dev\apps-curso\reune>python manage.py syncdb d:\dev\apps-curso\reune>python manage.py runserver NOTA: Para el proyecto x, seguir la configuracin indicado en la nube de GitHub
@asullom>Configuracin

4. ACTIVACIN DE MDULO ADMIN/ DE DJANGO CON MYSQL

En MySQL, cree la base de datos reune_db

@asullom>Configuracin

Pasito1

@asullom>Configuracin

Pasito2

@asullom>Configuracin

Pasito3

@asullom>Configuracin

Listo, solo falta ver los resultados d:\dev\apps-curso> python manage.py syncdb d:\dev\apps-curso> python manage.py runserver

@asullom>Configuracin

Back-end de administracin Django 1.5.1

@asullom>Configuracin

5. CRUD MEDIANTE ADMIN/ DE DJANGO

params>Diagrama de entidades
class params

Locality LocalityType name: Char 0..* name: Char location: Text utm: Char msnm: Float is_active: Boolean registered_at: DateTime modified_in: DateTime

+locality_type 1

Primero, crear la app params dentro de reune, vuelva a la consola d:\dev\apps-curso\reune>python manage.py startapp params

@asullom>Configuracin

Agregue la app params en settings.py


INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', # mis apps: 'params', # Uncomment the next line to enable the admin: 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', ) TIME_ZONE = 'America/Lima' LANGUAGE_CODE = 'es-PE'
@asullom>Configuracin

Edite params/models.py
# _*_ coding: utf-8 _*_ from django.db import models #Se crea el modelo tipos de localidades class LocalityType(models.Model): name = models.CharField(max_length=50) def __unicode__(self): return self.name #Se crea el modelo para las localidades class Locality(models.Model): name = models.CharField(max_length=50) location = models.TextField() utm = models.CharField(max_length=50, null=True, blank=True) msnm = models.FloatField() is_active = models.BooleanField(default=True) registered_at = models.DateTimeField(auto_now_add=True) modified_in = models.DateTimeField(auto_now=True) locality_type = models.ForeignKey(LocalityType) def __unicode__(self): return "%s %s" % (self.name, self.location)
@asullom>Configuracin

Agregue el archivo params/admin.py

from django.contrib import admin from params.models import * admin.site.register(LocalityType) admin.site.register(Locality)

En algunos casos, es necesario eliminar la bd


@asullom>Configuracin

Ya puede administrar sus nuevas tablas

@asullom>Configuracin

@asullom>Configuracin

@asullom>Configuracin

@asullom>Configuracin

6. CRUD PERSONALIZADO

cursos>Diagrama de entidades
class cursos

Realizar el crud para la tabla Curso


params::Locality +locality_type 1 0..* name: Char location: Text +locality utm: Char 0..1 msnm: Float is_active: Boolean registered_at: DateTime modified_in: DateTime Curso 0..* nombre: Char url: Char registered_at: DateTime modified_in: DateTime

params:: LocalityType name: Char

Primero, crear la app cursos dentro de reune, vuelva a la consola d:\dev\apps-curso\reune>python manage.py startapp cursos

@asullom>Configuracin

settings.py (agregue las siguientes lneas)

import os
STATICFILES_DIRS = ( # Put strings here, like "/home/html/static" or "C:/www/django/static". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. os.path.join(os.path.dirname(os.path.dirname(__file__)),'static'), ) TEMPLATE_DIRS = ( # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. os.path.join(os.path.dirname(os.path.dirname(__file__)),'templates'), )
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', # mis apps: 'params', 'cursos', 'mod_config.params', # Uncomment the next line to enable the admin: 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', )

@asullom>Configuracin

Cree el archivo style.css con el simple contenido

body { padding: 50px; font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; } a{ color: #00B7FF; }

@asullom>Configuracin

Cree el archivo base.html con el simple contenido

Tambin cree los .html para el crud (index.html, add.html, upd.html)

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>{% block title %} Base {% endblock %}</title> <link rel="stylesheet" href="{{ STATIC_URL }}css/style.css"> </head> <body> <header> <h1>Webapp <span>Python</span></h1> <p> <a href="{% url 'curso_list' %}">Mostrar</a> <a href="{ % url 'curso_add' %}">Agregar</a> </p> </header> {% block content %}{% endblock content %} </body> </html>

@asullom>Configuracin

Edite params/models.py
# _*_ coding: utf-8 _*_ from django.db import models from params.models import Locality #Se crea el modelo para los cursos class Curso(models.Model): nombre = models.CharField(max_length=50) url = models.CharField(max_length=50, null=True, blank=True) registered_at = models.DateTimeField(auto_now_add=True) modified_in = models.DateTimeField(auto_now=True) locality = models.ForeignKey(Locality) def __unicode__(self): return "%s %s" % (self.nombre, self.locality.name)

@asullom>Configuracin

Active las urls para la cursos

url(r'^cursos/', include('cursos.urls')),

@asullom>Configuracin

Agregue el archivo cursos/urls.py

from django.conf.urls import patterns, include, url urlpatterns = patterns('cursos.views', url(r'^$', 'index', name="index"), #url(r'^curso_list/', 'curso_list', name="curso_list"), #url(r'^curso_add/', 'curso_add', name="curso_add"), #url(r'^curso_upd/(?P<id>.*)/$', 'curso_upd', name="curso_upd"), #url(r'^curso_del/(?P<id>.*)/$', 'curso_del', name="curso_del"), )

@asullom>Configuracin

Verifique que todo vaya bien

# _*_ coding: utf-8 _*_ from django.http import HttpResponse,HttpResponseRedirect from django.template import Context from django.shortcuts import render_to_response from django.template.context import RequestContext from params.models import Locality from cursos.models import Curso #from cursos.forms import CursoAddForm, CursoUpdForm def index(request): return HttpResponse("Hola django")

@asullom>Configuracin

LISTAR

Como para toda accin, definir el controlador

@asullom>Configuracin

Define el mtodo curso_list(request):

def curso_list(request): curso_list = Curso.objects.all().order_by('-id'); ctx={'curso_list':curso_list} return render_to_response("cursos/curso/index.html", ctx, context_instance = RequestContext(request))

@asullom>Configuracin

En index.html copie este contenido

{% extends "base.html" %} {% block title %} Trabajar con cursos {% endblock %} {% block content %} {% for d in curso_list %} {{ d.nombre }} <a href="{ % url 'curso_upd' d.id %}">Actualizar</a> | <a href="{ % url 'curso_del' d.id %}">Eliminar</a> <br> {% empty %} An no hay registros {% endfor %} {% endblock content %} @asullom>Configuracin

AGREGAR

definir el controlador curso_add

@asullom>Configuracin

Agregue el archivo cursos/forms.py

# -*- coding: utf-8 -*from django import forms from django.forms import ModelForm from params.models import Locality from cursos.models import Curso class CursoAddForm(forms.Form): nombre = forms.CharField(widget = forms.TextInput(), required=True) locality = forms.ModelChoiceField(queryset=Locality.objects.all(), required=True, label="Locality") url = forms.CharField(widget = forms.TextInput(), label="URL", required=True)

@asullom>Configuracin

Define el mtodo curso_add(request): y no olvide activar la importacin del form


from cursos.forms import CursoAddForm#, CursoUpdForm

def curso_add(request): form = CursoAddForm if request.method == "POST": form = CursoAddForm(request.POST) if form.is_valid(): d = Curso(

ctx = {'form':form} return render_to_response('cursos/curso/add.html', ctx , context_instance = RequestContext(request))

) d.save() return HttpResponseRedirect('/cursos/curso_list')

nombre = form.cleaned_data['nombre'], url = form.cleaned_data['url'], locality_id = form.cleaned_data['locality'].id, # usuario_id = request.user.id,

@asullom>Configuracin

En add.html copie este contenido

{% extends "base.html" %} {% block title %} Add curso {% endblock %} {% block content %} <h3>Add curso</h3> <form action="" method ="POST"> {% csrf_token %} {{ form.as_p }} <input type="submit" value="Agregar"> </form> {% endblock content %}

@asullom>Configuracin

Active el link

@asullom>Configuracin

ACTUALIZAR

definir el controlador curso_upd

@asullom>Configuracin

Actualice el archivo cursos/forms.py

class CursoUpdForm(ModelForm): class Meta: model = Curso #Campos que se mostraran fields = ('nombre','locality',) # exclude = ('url',)

@asullom>Configuracin

Define el mtodo curso_upd(request, id): y no olvide activar la importacin del form


from cursos.forms import CursoAddForm, CursoUpdForm

def curso_upd(request, id): d = Curso.objects.get(id=id) form = CursoUpdForm(instance=d) if request.method == "POST": form = CursoUpdForm(request.POST, instance=d) if form.is_valid(): form.save() return HttpResponseRedirect('/cursos/curso_list') ctx = {'form':form} return render_to_response('cursos/curso/upd.html', ctx , context_instance = RequestContext(request))

@asullom>Configuracin

En upd.html copie este contenido

{% extends "base.html" %} {% block title %} Actualizar curso {% endblock %} {% block content %} <h3>Actualizar curso</h3> <form action="" method ="POST"> {% csrf_token %} {{ form.as_p }} <input type="submit" value="Actualizar"> </form> {% endblock content %}

@asullom>Configuracin

Active el link

@asullom>Configuracin

ELIMINAR

definir el controlador curso_del

@asullom>Configuracin

Define el mtodo curso_del(request, id):

def curso_del(request, id): d = Curso.objects.get(id=id) d.delete() return HttpResponseRedirect('/cursos/curso_list')

@asullom>Configuracin

Active el link

@asullom>Configuracin

Su apariencia puede mejorar si usa las plantillas de


http://www.initializr.com/

@asullom>Configuracin

7.1. Instale python 3 7.2. Instale easy_install y pip 7.3. Instale Django 1.5.1 7.4. Cree la app reune en d:\dev\apps-curso\ 7.5. Agregue el mdulo clases 7.6. Instalacin del API para la conexin a MySQL

7. INSTALACIN DE DJANGO1.5.1 CON PYTHON3.3.1

Pgina de python

@asullom>Configuracin

7.1. Instale python 3

@asullom>Configuracin

Python instalado

@asullom>Configuracin

No confundir Python\Scripts con Python\Tools\Scripts.

@asullom>Configuracin

7.2. Instale easy_install y pip


https://pypi.python.org/pypi/distribute

(Para Pytho2.7 descargar easy_install (setuptools-0.6c11.win32-py2.7.exe) de https://pypi.python.org/pypi/setuptools ejecutar y pathearlo C:\Python27\Scripts Tambin ver gua: http://pythonhosted.org/distribute/easy_install.html)
@asullom>Configuracin

Descomprima y pegue en C:\distribute-0.6.36 Ingrese y ejecute el siguiente comando


python setup.py install

Finalmente, agregue en el Path C:\Python33\Scripts\

@asullom>Configuracin

Instalacin de pip en Python 3


easy_install pip

@asullom>Configuracin

7.3. Instale Django 1.5.1


https://www.djangoproject.com/ casi no est disponible, entonce pip install Django==1.5.1

@asullom>Configuracin

7.4. Cree la app reune en d:\dev\apps-curso\

django-admin.py startproject reune

@asullom>Configuracin

Ejecute
python manage.py runserver

@asullom>Configuracin

7.5. Agregue el mdulo clases


python manage.py startapp clases

@asullom>Configuracin

7.6. Instalacin del API para la conexin a MySQL

Buscando. uno que funcioneeee (sin solucin por el momento)

Para Python2.7 descargar de https://pypi.python.org/pypi/MySQL-python/1.2.4

@asullom>Configuracin

Solo cambia la instalacin, el resto es =

CODEADORES MAC OS

Solo cambia la instalacin, el resto es =

CODEADORES LINUX

También podría gustarte