Django vs web2py para um desenvolvedor iniciante [fechado]

83

Qual dessas duas estruturas é mais adequada para um desenvolvedor com 11 meses de experiência. Decidi aprender python para minha codificação do lado do servidor e queria saber qual deles seria mais adequado para alguém com meu nível de habilidade. Acabei de passar alguns dias brincando com o web2py e realmente gosto dele, e estou me perguntando se o Django oferece algo mais que estou perdendo?

PS. ATUALIZAÇÃO: Obrigado a todos pela contribuição maravilhosa, depois de comprar três livros de django e passar por alguns pequenos projetos / tutoriais para django e web2py, optei por web2py. Esta é uma estrutura maravilhosa, que torna o desenvolvimento web muito divertido para um novato. Eu recomendaria a todos os iniciantes que aprendessem essa estrutura, pois ela será a tendência no futuro. Django também é um framework maravilhoso, mas web2py é apenas melhor na minha opinião de experiência limitada.

RubyGladiator
fonte
Verifique se isso ajuda mengu.net/post/django-vs-web2py
Shiv Deepak
1
"O Web2py permite que você se concentre no desenvolvimento de seu aplicativo, o Django não. Ele quer que você faça todas as suas coisas." Sim, parece uma comparação muito imparcial
user240515
Não escolha uma citação para apoiar sua afirmação. O artigo não é tão ruim.
Ashley
Acho que encontrei um tutorial direcionado a novatos completos para web2py: Killer Web Development
Colin Keenan
1
'se você já usou Django ... a coisa toda é baseada em herança. Quando eles introduziram [CBVs], ficou tão complexo que alguém teve que fazer este site apenas para explorar a árvore de herança: ccbv.co.uk '- news.ycombinator.com/item?id=7994281 vs' Outro contra é que, porque modelos e controladores não são baseados em classe, a reutilização eficiente de código torna-se mais difícil, particularmente porque a incapacidade de herdar de um controlador pai ... significa que a funcionalidade do controlador comum deve ser referenciada repetidamente em todos os arquivos do controlador. ' - en.wikipedia.org/wiki/Web2py
mistermarko

Respostas:

107

(isenção de responsabilidade: eu sou o líder do projeto para web2py)

Django existe há cerca de 5 anos a mais que o web2py, portanto, tem mais usuários e mais aplicativos para exibir. Django tem o que eles chamam de "admin", que não é o mesmo que "admin" do web2py, mas é mais parecido com o "appadmin" do web2py. O "admin" do Django é melhor e mais personalizável do que o "appadmin" do web2py. Django não possui o equivalente ao "admin" do web2py. (desculpe a confusão de nome).

web2py é mais compacto e tem mais funcionalidades prontas para uso (mais bancos de dados suportados, IDE baseado na web, sistema de tíquetes, roda em GAE sem patches, métodos de login múltiplos, controle de acesso baseado em função, interface de tradução baseada na web, suporte para múltiplas conexões de banco de dados transações distribuídas e muito mais).

Para mim, a funcionalidade mais importante do web2py são as migrações automáticas. Django não os fornece fora da caixa.

Para web2py, a compatibilidade com versões anteriores de longo prazo é o objetivo principal, junto com a segurança. Django é comparável ao web2py em termos de segurança (exceto que web2py tinha prevenção de CSRF e escape padrão em templates antes deles), mas Django quebrou a compatibilidade com versões anteriores quando 1.0 foi lançado. web2py nunca o fez desde outubro de 2007.

Para mim, a sintaxe web2py é mais natural:

 db(db.tablename.fieldname <= value).select() # web2py
 Tablename.objects.filter(fieldname__lt=value) # Django

Não tenho conhecimento de nenhuma funcionalidade do web2py que não esteja presente no Django. Já fiz essa pergunta muitas vezes porque, se houver, queremos adicioná-la ao web2py, mas ainda não recebi uma resposta satisfatória.

Claro que há coisas que ambos fazemos, mas de forma diferente. Django segue "explícito é melhor do que implícito". web2py não segue e segue "tudo deve ter um comportamento padrão". Acredito que isso torna o código e a configuração do web2py mais compactos.

De qualquer forma, seja qual for sua escolha, ambos são bons e sólidos frameworks web e existem menos semelhanças do que diferenças. Os desenvolvedores do Django são pessoas muito inteligentes.

A comunidade web2py é muito amigável. Como experiência, tente fazer uma pergunta no grupo web2py google e no grupo Django.

mdipierro
fonte
1
Obrigado, isso é algo bom. Estou fazendo um tutorial do Django para testá-lo, a sintaxe do web2py é definitivamente mais natural. Espero que depois disso eu tenha uma imagem mais clara, mas até agora ambas as estruturas parecem muito boas.
RubyGladiator
11
+1 (eu aprecio que o web2py permite que você escreva python diretamente em suas visualizações)
doug,
1
Tenho uma pergunta sobre o exemplo web2py que você forneceu (" db(db.tablename.fieldname <= value).select()"), porque ele não se parece com Python (a parte entre colchetes não está atribuindo valor a um dos parâmetros, mas apenas passando True/ False). É padrão para web2py ou o código que você forneceu é apenas uma versão simplificada do código web2py da vida real? Talvez a parte entre colchetes deva ser colocada entre aspas? Por favor explique.
Tadeck
Em db (...). Select () o ... não é um valor True / False. db.tablename.fieldname <= value é uma expressão que será avaliada como verdadeira ou falsa em cada registro. Este é o código web2py real. Sem citações.
Massimo
4
O web2py DAL simplesmente fornece uma maneira de escrever consultas. As consultas são convertidas em SQL e enviadas para o banco de dados que retorna uma resposta. web2py não é afetado por quantos registros existem no banco de dados e não se importa. Em outras palavras, se eu escrever "db (db.tablename.fieldname <= value) .select ()", web2py NÃO recuperará todos os registros e avaliará a condição de cada um deles. Se for consultar o banco de dados por "SELECT * FROM TABLENAME WHERE FIELDNAME = '1'".
Massimo
23

Tanto o Django quanto o web2py são excelentes frameworks web 'full stack' com recursos e capacidades semelhantes - você não estará 'perdendo' muito como um iniciante com qualquer um dos frameworks.

É difícil responder à sua pergunta sem saber mais sobre o que você quer fazer com o seu aprendizado. Alguns diriam que existe o perigo de aprender a estrutura e não a linguagem, então pode ser melhor obter um entendimento mais profundo da linguagem Python e estruturas mais leves (por exemplo, Flask ou wekzeug ) primeiro.

Dito isso, web2py tem uma curva de aprendizado inicial menor do que Django, pois foi projetado especificamente como uma ferramenta de aprendizado . Então, eu diria que você fez uma boa escolha. Nenhum aprendizado é desperdiçado e se você decidiu que precisa de algo mais no futuro, as boas técnicas que você aprendeu usando o web2py não serão desperdiçadas.

Embora existam mais recursos de aprendizagem para Django, já que já existe há mais tempo e tem mais usuários, aprender web2py também é rápido por causa do excelente livro e respostas quase instantâneas às perguntas do grupo de usuários .

Se você está procurando um emprego, existem mais empregos Django, então isso pode ser um fator. Dito isso, a comunidade web2py recentemente criou experts4solutions onde você pode promover suas habilidades e disponibilidade no futuro.

Diverta-se!

keybits
fonte
Obrigado Knitatoms, eu realmente aprendi ruby ​​e estou fazendo a transição e aprendendo python, que parece muito semelhante até agora. Em relação ao que eu gostaria de fazer com um framework, seria puramente construir uma startup na web em um futuro próximo. Eu também gostaria de construir algo usando jquerymobile, pois tenho brincado com ele.
RubyGladiator
2
Interessante ouvir - estou em uma posição semelhante e porque irei trabalhar para mim mesmo e, portanto, escolhendo meu próprio framework, optei pelo web2py e estou feliz até agora.
keybits
10

Sou um novato completo com Web2py e DJango, mas queria um framework web que fosse python para brincar, aprender e criar um front end para um banco de dados simples. Olhei para o web2py mas não consegui encontrar nenhum tutorial decente, direcionado a novatos, quando instalei o web2py, o que foi muito fácil, não sabia o que fazer a seguir, parecia não haver nenhum tutorial que me orientasse como construir um aplicativo da web simples (não apenas hello world). Por outro lado, o DJango escreveu seu primeiro aplicativo DJango, parte 1 . Isso tem sido muito bom, dando a um novato uma introdução sobre como configurar e usar a estrutura escrevendo um aplicativo da web simples. Até que o Web2Py ofereça isso, meu voto vai para DJango.

user595985
fonte
Aprendi Web2py por não conhecer Python ou bancos de dados observando: youtube.com/… Pouco depois, desenvolvi dois serviços da Web de produção para uma empresa de grande escala e uma base de usuários com Web2py. Muito obrigado à comunidade de grupos do Google!
Preactive de
6

Em muitas palavras: (como eu entendi)

Web2py é definitivamente mais fácil e torna o código mais simples e limpo. Mas o Django dá a você um melhor entendimento do que está acontecendo e também mais poder para modificar o design / processo.

Web2py tem mais foco em "simples é melhor que complexo", mas Django tem mais foco em "explícito é melhor do que implícito". Duas partes de The Zen of Python, então é muito difícil dizer qual framework é mais Python.

Saeedgnu
fonte
9
Na verdade, às vezes acho o Web2Py bastante oposto, complicado - o que é contra o " complexo é melhor do que complicado ". Compatibilidade com versões anteriores, nomes duplicados, execução implícita de vários arquivos, variáveis ​​globais penduradas em todos os lugares - todos esses problemas resultaram em uma estrutura Python que vai contra a filosofia do Python.
Tadeck