<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-551066779350289636</id><updated>2011-11-27T21:23:25.624-02:00</updated><category term='iniciante'/><title type='text'>Aprenda web2py</title><subtitle type='html'>Ajudando ao iniciante, com o básico</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-551066779350289636.post-4117228338993975661</id><published>2011-10-21T16:45:00.001-02:00</published><updated>2011-10-21T16:46:00.304-02:00</updated><title type='text'>Reusing frequently used queries and joins</title><summary type='text'>In DAL chapter on Web2py book, there's a section called  "Query, Sets, Rows".

It explains the use of the Query object in a very short way and doesn't explore its power.

Let's see some examples to optimize your application, shorten your code and don't repeat yourself.

Frequently used  queries (i.e, common filtering by date):
db.define_table('show',
    Field('name', 'string'),
    Field('</summary><link rel='replies' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/4117228338993975661/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://aprenda-web2py.blogspot.com/2011/10/reusing-frequently-used-queries-and.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/4117228338993975661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/4117228338993975661'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/2011/10/reusing-frequently-used-queries-and.html' title='Reusing frequently used queries and joins'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-551066779350289636.post-3039415213479469379</id><published>2011-10-21T16:44:00.000-02:00</published><updated>2011-10-21T16:44:10.988-02:00</updated><title type='text'>Reusar queries usadas com frequência</title><summary type='text'>No capítulo sobre DAL do livro de Web2py, existe uma seção chamada "Query, Sets, Rows".

Ela explica como usar o objeto Query de uma forma bem resumida e não explora todo o poder que ele tem.

Vamos ver alguns exemplos de como otimizar sua aplicação, encurtar seu código e praticar o princípio DRY (don't repeat yourself).

Consultas, ou queries, usadas com frequência (p.ex, filtragem comum por </summary><link rel='replies' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/3039415213479469379/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://aprenda-web2py.blogspot.com/2011/10/reusar-queries-usadas-com-frequencia.html#comment-form' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/3039415213479469379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/3039415213479469379'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/2011/10/reusar-queries-usadas-com-frequencia.html' title='Reusar queries usadas com frequência'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-551066779350289636.post-6799108658481492406</id><published>2011-04-30T23:20:00.000-03:00</published><updated>2011-04-30T23:20:00.310-03:00</updated><title type='text'>Total control over your models</title><summary type='text'>Every single web2py application that uses database, has its own models dir.

This directory is particularly important due to some characteristics:
models directory files ares executed in alphabetical order;
Your application's database tables definitions stay in it; 
Objects defined by these files become available on your app's global scope. They can be accessed by controllers and views.
I warn </summary><link rel='replies' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/6799108658481492406/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://aprenda-web2py.blogspot.com/2011/04/total-control-over-your-models.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/6799108658481492406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/6799108658481492406'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/2011/04/total-control-over-your-models.html' title='Total control over your models'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-551066779350289636.post-1792148091218888484</id><published>2011-04-27T00:32:00.001-03:00</published><updated>2011-04-27T00:41:06.703-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iniciante'/><title type='text'>Controle total sobre seus models</title><summary type='text'>Toda aplicação web2py que usa banco de dados tem um diretório chamado models.

Esse diretório é particularmente importante devido a alguns fatores:
Os arquivos do diretório models são executados em ordem alfabética;
É ali que ficam as definições das tabelas dos bancos de dados de sua aplicação; 
Os objetos definidos por esses arquivos ficam disponíveis com escopo global na aplicação. Ou seja, </summary><link rel='replies' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/1792148091218888484/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://aprenda-web2py.blogspot.com/2011/04/controle-total-sobre-seus-models.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/1792148091218888484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/1792148091218888484'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/2011/04/controle-total-sobre-seus-models.html' title='Controle total sobre seus models'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-551066779350289636.post-2524976537982352489</id><published>2011-03-20T04:20:00.006-03:00</published><updated>2011-03-20T04:31:47.422-03:00</updated><title type='text'>Sendo mais ágil com o appadmin</title><summary type='text'>No artigo "Quem alterou um registro" eu mostrei como o web2py agiliza e padroniza a criação e controle de dados das tabelas automaticamente.

Mas quando estamos testando o aplicativo e usando o appadmin, precisamos de agilidade para incluir e alterar registros no bd.

Daí, para passar a validação de quem incluiu um registro, faça conforme abaixo:

""" Alterando o auth.signature para permitir
</summary><link rel='replies' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/2524976537982352489/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://aprenda-web2py.blogspot.com/2011/03/sendo-mais-agil-com-o-appadmin.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/2524976537982352489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/2524976537982352489'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/2011/03/sendo-mais-agil-com-o-appadmin.html' title='Sendo mais ágil com o appadmin'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-551066779350289636.post-9201805377441463664</id><published>2011-02-08T23:10:00.005-02:00</published><updated>2011-03-20T03:59:11.562-03:00</updated><title type='text'>Quem alterou um registro</title><summary type='text'>Detalhes fazem a diferença, certo? O web2py se preocupa com eles para dar produtividade ao desenvolvedor.

Uma boa ideia é o auth.signature

Vamos a um exemplo:
db.define_table('cadastro',
  Field('nome', 'string', length=100),
  Field('telefone', 'string', length=20),
  auth.signature)

Esse comando vai criar uma tabela chamada cadastro com os campos id (criado automaticamente), nome e telefone,</summary><link rel='replies' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/9201805377441463664/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://aprenda-web2py.blogspot.com/2011/02/quem-alterou-um-registro.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/9201805377441463664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/9201805377441463664'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/2011/02/quem-alterou-um-registro.html' title='Quem alterou um registro'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-551066779350289636.post-4932307551879162831</id><published>2010-11-16T05:07:00.002-02:00</published><updated>2010-11-16T05:16:51.141-02:00</updated><title type='text'>Fixtures no Web2py</title><summary type='text'>Uma das coisas boas dos frameworks modernos é trabalhar com fixtures.

Se você ainda não sabe, fixtures são a massa de dados inicial do seu banco de dados. Aqueles registros que você inclui só pra testar suas consultas, lembra? Pois é; são fixtures. E dá um trabalho danado incluir novamente toda vez que você precisa mudar alguma coisa no seu banco de dados, né? As fixtures estão aí pra ajudar </summary><link rel='replies' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/4932307551879162831/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://aprenda-web2py.blogspot.com/2010/11/fixtures-no-web2py.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/4932307551879162831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/4932307551879162831'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/2010/11/fixtures-no-web2py.html' title='Fixtures no Web2py'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-551066779350289636.post-3154495014338860168</id><published>2010-11-08T15:40:00.011-02:00</published><updated>2011-05-15T11:46:46.028-03:00</updated><title type='text'>request.now ou datetime.now?</title><summary type='text'>O Web2py tem a variável request.now que você pode usar no lugar de datetime.datetime.now() sem precisar importar nada. Essa variável guarda o horário que a requisição foi executada. 

Eu estou fazendo uma aplicação com uma parte rodando via cron e me deparei com uma situação inusitada: todos os registros alterados no processo da cron tinham o mesmo horário de modificação. Isso porque eu usei o </summary><link rel='replies' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/3154495014338860168/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://aprenda-web2py.blogspot.com/2010/11/requestnow-ou-datetimenow.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/3154495014338860168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/3154495014338860168'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/2010/11/requestnow-ou-datetimenow.html' title='request.now ou datetime.now?'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-551066779350289636.post-1486428290643912281</id><published>2010-10-29T08:12:00.000-02:00</published><updated>2010-10-29T08:12:04.152-02:00</updated><title type='text'>print vai pra console</title><summary type='text'>Volta e meia precisamos depurar programas, principalmente quando o negócio do aplicativo é complexo ou quando estamos aprendendo uma tecnologia nova, pra ver como ela funciona.

No Web2py você pode depurar sua aplicação web sem interferir no resultado das suas páginas.

Se você usar o comando print do Python, o conteúdo printado sai na console do Web2py, ao invés de ser mostrado no browser.

Faça</summary><link rel='replies' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/1486428290643912281/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://aprenda-web2py.blogspot.com/2010/10/print-vai-pra-console.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/1486428290643912281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/1486428290643912281'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/2010/10/print-vai-pra-console.html' title='print vai pra console'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-551066779350289636.post-7190370350120872719</id><published>2010-10-22T08:53:00.000-02:00</published><updated>2010-10-22T08:53:03.234-02:00</updated><title type='text'>Markmin pronto pra usar</title><summary type='text'>Se você já precisou permitir que os usuários do seu aplicativo inserissem conteúdo para ser mostrado, provavelmente pensou na alternativa de usar alguma linguagem de marcação que não fosse HTML.

A Wikipedia popularizou isso, e hoje temos várias por aí. Quase todas têm certa semelhança, mas o importante é que seu usuário não precisa estudar HTML para usar seu aplicativo.

O problema em alguns </summary><link rel='replies' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/7190370350120872719/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://aprenda-web2py.blogspot.com/2010/10/markmin-pronto-pra-usar.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/7190370350120872719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/7190370350120872719'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/2010/10/markmin-pronto-pra-usar.html' title='Markmin pronto pra usar'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-551066779350289636.post-3157039942110194796</id><published>2010-10-22T08:13:00.002-02:00</published><updated>2010-10-22T08:19:21.332-02:00</updated><title type='text'>Layouts prontos</title><summary type='text'>Quem me conhece sabe que fazer layout não é o meu forte. Eu não tenho o menor dom para fazer um layout bonitinho, pelo menos.

Agora meus problemas praticamente acabaram!
Temos plugins que possibilitam usar layouts do CSS Zen Garden e do Free CSS Templates no Web2py:
CSS Ocean Garden
Free CSS Templates Plugin
Tá, mas se você tem algum dom para bolar layouts legais, qual a vantagem disso?

A maior</summary><link rel='replies' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/3157039942110194796/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://aprenda-web2py.blogspot.com/2010/10/layouts-prontos.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/3157039942110194796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/3157039942110194796'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/2010/10/layouts-prontos.html' title='Layouts prontos'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-551066779350289636.post-9210424466145620045</id><published>2010-10-22T07:51:00.000-02:00</published><updated>2010-10-22T07:51:15.102-02:00</updated><title type='text'>Web2py app wizard</title><summary type='text'>Quando que você for desenvolver uma nova aplicação no Web2py, é boa prática iniciar com o esqueleto que ele gera a partir da aplicação examples.

Já tem alguma coisa pronta ali.
Mas se você é daqueles que gostam de  ver mais recursos e achava que essa aplicação inicial era muito "pelada", dá uma olhada nesse screecast que demonstra o Web2py Application Wizard.

Não sei se você reparou, mas ele </summary><link rel='replies' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/9210424466145620045/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://aprenda-web2py.blogspot.com/2010/10/web2py-app-wizard.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/9210424466145620045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/9210424466145620045'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/2010/10/web2py-app-wizard.html' title='Web2py app wizard'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-551066779350289636.post-50794730907092743</id><published>2010-10-20T00:12:00.001-02:00</published><updated>2010-10-20T00:22:19.645-02:00</updated><title type='text'>web2py no shell do Python</title><summary type='text'>Muita gente deve saber, mas não todos: é possível usar o web2py apenas com o shell do Python.

Eu vi isso no Django e gostei muito, pois tira proveito do jeito pythônico de aprender com pequenos testes.

Faça assim: $ python web2py.py -S aplicacao -M

O parâmetro -S aplicacao informa qual aplicação você vai usar no shell.
Já o -M faz com que os models sejam executados ao iniciar o shell.

Qual a </summary><link rel='replies' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/50794730907092743/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://aprenda-web2py.blogspot.com/2010/10/web2py-no-shell-do-python.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/50794730907092743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/50794730907092743'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/2010/10/web2py-no-shell-do-python.html' title='web2py no shell do Python'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-551066779350289636.post-185661183251294280</id><published>2010-06-08T08:58:00.000-03:00</published><updated>2010-06-08T08:58:50.951-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iniciante'/><title type='text'>Rodando o web2py no seu computador</title><summary type='text'>Se você nunca viu o web2py na vida, continue lendo esse post. Aqui vamos iniciar com o web2py de uma forma bem iniciante mesmo.

O primeiro passo é fazer download do web2py em web2py.com

A praticidade começa logo de cara. Para executá-lo, basta baixar o pacote para seu sistema operacional e começar a usá-lo. Simples e direto, como tudo deveria ser.

Vale notar as versões de Python com as quais o</summary><link rel='replies' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/185661183251294280/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://aprenda-web2py.blogspot.com/2010/06/rodando-o-web2py-no-seu-computador.html#comment-form' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/185661183251294280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/185661183251294280'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/2010/06/rodando-o-web2py-no-seu-computador.html' title='Rodando o web2py no seu computador'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-551066779350289636.post-8081497516158517242</id><published>2009-07-15T15:02:00.004-03:00</published><updated>2009-07-15T15:33:21.942-03:00</updated><title type='text'>Compromisso com a compatibilidade reversa</title><summary type='text'>Como eu comentei no post inicial desse blog (Mais um framework para Python?) uma das vantagens que eu vejo no web2py é ter acesso a quem o desenvolve.Como desenvolvedor, eu me preocupo muito com a durabilidade do investimento que faço para aprender alguma tecnologia nova. É ruim e contra-producente ter que reaprender ou adaptar as coisas que já funcionavam, a cada nova release de software.Por </summary><link rel='replies' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/8081497516158517242/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://aprenda-web2py.blogspot.com/2009/07/compromisso-com-compatibilidade-reversa.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/8081497516158517242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/8081497516158517242'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/2009/07/compromisso-com-compatibilidade-reversa.html' title='Compromisso com a compatibilidade reversa'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-551066779350289636.post-4503299380511793986</id><published>2009-07-14T23:42:00.010-03:00</published><updated>2010-10-20T00:36:01.298-02:00</updated><title type='text'>Mais um framework para python?</title><summary type='text'>Sim, web2py é mais um framework para a linguagem python.

Só que com uma proposta diferente, pois ele herda conceitos do Ruby on Rails e do Django. Ele tenta obter o melhor dos 2 mundos e também faz opções particulares.

Ou seja, ele procura ser produtivo, rápido e seguro.

E por que eu escolhi esse framework que não é tão conhecido ainda?

Por alguns motivos. Alguns de ordem técnica, outros de </summary><link rel='replies' type='application/atom+xml' href='http://aprenda-web2py.blogspot.com/feeds/4503299380511793986/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://aprenda-web2py.blogspot.com/2009/07/mais-um-framework-para-python.html#comment-form' title='9 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/4503299380511793986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/551066779350289636/posts/default/4503299380511793986'/><link rel='alternate' type='text/html' href='http://aprenda-web2py.blogspot.com/2009/07/mais-um-framework-para-python.html' title='Mais um framework para python?'/><author><name>Vinicius Assef</name><uri>http://www.blogger.com/profile/02352153394258072317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/-5QtDiIvts5A/TouQO1V7GgI/AAAAAAAAAE4/q_HiTjq9QZ0/s220/eu-im2.jpg'/></author><thr:total>9</thr:total></entry></feed>
