Está en la página 1de 5

http://www.web2py.com.

ar/wiki/default/_page/Tutorial_Curso_Intensivo

Tutorial curso intensivo


formato: pdf txt

Contenidos:

 Descargar e Instalar
 Crear una nueva aplicación
 Crear el modelo
 Editar el controlador
 Agregar vistas
 Fin
 Google App Engine

Adaptación y traducción de A crash course in Web2py a su vez inspirado por este crash
course in Django. Es un poco diferente porque se decidió:

 mover lógica de negocio de la vista del ejemplo de Django al controlador, y definir la tabla
de comentarios explícitamente en vez de usar un plugin.
 habilitar sintaxis WIKI markdown tanto en los envios del blog como en los comentarios
 requerir iniciar sesión para comentar

Descargar e Instalar¶
No hay proceso de instalación. Descargar web2py desde http://web2py.com.ar,
descomprimir y hacer clic en "web2py".

Preguntará una contraseña de administrador. Ingresar alguna.

Crear una nueva aplicación¶


Se abrirá un explorador con la interfaz administrativa en: http://127.0.0.1:8000/admin

Iniciar sesión con la contraseña elegida anteriormente. En el cuadro de texto a la derecha


"Crear nueva aplicación" (create new application) escribir el nombre de la nueva
aplicación, por ejemplo "blog", y presionar "enviar" (submit). Será redirigido a la página de
diseño que le permitirá editar la nueva aplicación.

Haga clic en "Administración de la base de datos" (database administration) para tener una
interfaz basada en web a su base de datos.
Crear el modelo¶
En la página de diseño aparecerá un archivo de modelos creado por default (db.py). Este
archivo realiza las conecciones necesarias con la base de datos (en este caso vamos a ver
que detecta si es Google App Engine, o de lo contrario crea una conexión con el motor
sqlite).

Al final del archivo tendrá que escribir::

db.define_table('articulo',
Field('titulo',length=256),
Field('texto','text',requires=IS_NOT_EMPTY()),
Field('autor',db.auth_user))

db.define_table('comentario',
Field('articulo',db.articulo,writable=False,readable=False),
Field('autor',db.auth_user,writable=False,readable=False),
Field('texto','text',requires=IS_NOT_EMPTY()))

Con esto se crearan 2 tablas. Publicaciones relacionadas con un usuario registrado. Y


comentarios relacionados con el artículo y más usuarios registrados.

Ahora, Vaya a la interfaz administrativa de la base de datos y agregue algunos artículos:


http://127.0.0.1:8000/blog/appadmin

¡¡IMPORTANTE!!! Asegurese que se ha registrado y inicie sesión en la aplicación de lo


contrario los artículos no tendrán autor y no podrán ser mostrados:

 https://127.0.0.1:8000/blog/default/user/register : (menú Autentication, Login, Register)


 https://127.0.0.1:8000/blog/default/user/login (menú Autentication, Login)

Si no está usando los archivos estándar, verifique que este habilitada la inicialización de
autenticación en db.py::

from gluon.tools import Auth


auth=Auth(globals(),db)
auth.define_tables()

Y en el controlador default.py que figure la funcion user para habilitar la registración::

def user():
return dict(form=auth())

Editar el controlador¶
En la página de diseño edite el controlador "default.py" al hacer click en el link edit
apropiado, modifique la función "index" y cree una función "view_post" como se muestra
abajo:

def index():
return dict(articulos=db().select(db.articulo.ALL))

def view_post():
id_articulo = request.args(0)
articulo = db.articulo[id_articulo] or
redirect(URL(r=request,f='index'))
if auth.is_logged_in():
db.comentario.articulo.default = articulo.id
db.comentario.autor.default = auth.user.id
form = crud.create(db.comentario)
else:
form = A("inicie sesión para
comentar",_href=URL(r=request,f='user/login'))
comentarios =
db(db.comentario.articulo==articulo.id).select(db.comentario.ALL)
return dict(articulo=articulo, form=form,
comentarios=comentarios)

Si no está usando los archivos estándar, verifique que en el modelo db.py esté habilitado
CRUD para altas/bajas y modificaciones (ABM)::

from gluon.tools import Crud


crud=Crud(globals(),db)

En este punto la aplicación es completamente funcional aunque podría no gustarle del todo
las vistas por defecto, entonces...

Agregar vistas¶
Edite la vista "default/index.html" asociada a la acción "index()". Reemplace el contenido
de la vista con::

{{extend 'layout.html'}}
{{from gluon.contrib.markdown import WIKI}}
<h1>Artículos</h1>
{{ for articulo in articulos:}}
<h2>
<a
href="{{=URL(r=request,f='view_post',args=articulo.id)}}">
{{=articulo.titulo}}
</a>
</h2>
{{=WIKI(articulo.texto)}}
{{ pass }}
Ahora cree una vista para un artículo y sus comentarios. Hagalo creando un nuevo archivo
de vista "default/view_post.html":

{{extend 'layout.html'}}
{{from gluon.contrib.markdown import WIKI}}
<h1>{{=articulo.titulo}}</h1>
<h2>by {{=articulo.autor.first_name}}</h2>
{{=WIKI(articulo.texto)}}
<h2>Comentarios</h2>
{{for comentario in comentarios:}}
<blockquote>
{{=WIKI(comentario.texto)}}
<em>por {{=comentario.autor.first_name}}</em>
</blockquote>
{{ pass }}
{{=form}}

Fin¶
Ahora puede visitar su blog en: http://127.0.0.1:8000/blog

y ver los artículos individuales en

 http://127.0.0.1:8000/blog/default/view_post/1
 http://127.0.0.1:8000/blog/default/view_post/2
 http://127.0.0.1:8000/blog/default/view_post/3
...

Para comentar es necesario iniciar sesión. Puede iniciar sesión, registrarse, administrar su
perfil, etc, aqui:

 http://127.0.0.1:8000/blog/default/user/login
 http://127.0.0.1:8000/blog/default/user/register
 http://127.0.0.1:8000/blog/default/user/logout
 http://127.0.0.1:8000/blog/default/user/retrieve_password
 http://127.0.0.1:8000/blog/default/user/profile
 http://127.0.0.1:8000/blog/default/user/change_password

Puede administrar su blog (gestionar cuentas, crear y eliminar artículos y comentarios) en


http://127.0.0.1:8000/blog/appadmin

Pede editar el código fuente en línea vía http://127.0.0.1:8000/admin

Si no le gusta la URLs predeterminada puede cambiar el mapeo editando routes.py

También puede hacer mapeo reverso de URL para no necesitar cambiar el código o vistas si
la dirección cambia. Los enlaces no se romperán.
Google App Engine¶
Este código funciona en GAE como está. No necesita ningún ajuste. Necesita correr la
versión fuente de web2py, no la distribución binaria. Debe editar el archivo "app.yaml" en
la carpeta principal de web2py y reemplazar "web2py" con el nombre de su GAE
application-id. Luego desplegar en GAE:

cd /path/to/where/web2py/is
appcfg.py update web2py

Puede ahora encontrar su aplicación corriendo en http://gae-application-id.appspot.com

********************************************************************************

También podría gustarte