Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ar/wiki/default/_page/Tutorial_Curso_Intensivo
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".
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).
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()))
Si no está usando los archivos estándar, verifique que este habilitada la inicialización de
autenticación en db.py::
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)::
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
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
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
********************************************************************************