Web2py - Web2py

web2py Kurumsal Web Çerçevesi
web2py logosu
web2py logosu
Orijinal yazar (lar)Massimo Di Pierro
İlk sürüm27 Eylül 2007; 13 yıl önce (2007-09-27)
Kararlı sürüm
2.20.4 / 3 Mayıs 2020; 6 ay önce (2020-05-03)[1]
DepoWeb2py Deposu
YazılmışPython
PlatformÇapraz platform
TürWeb uygulama çerçevesi
LisansGNU Daha Az Genel Kamu Lisansı sürüm 3 (LGPLv3)
İnternet sitesiwww.web2py.com

Web2py bir açık kaynak web uygulama çerçevesi yazılmış Python Programlama dili. Web2py izin verir Web geliştiricileri programlamak dinamik web içeriği kullanma Python. Web2py, geliştirme gibi sıkıcı web geliştirme görevlerini azaltmaya yardımcı olmak için tasarlanmıştır. web formları sıfırdan, ancak bir web geliştiricisi bir form gerekirse sıfırdan.[2]

Web2py, başlangıçta kullanım kolaylığına vurgu yapan bir öğretim aracı olarak tasarlanmıştır ve dağıtım. Bu nedenle, proje düzeyinde herhangi bir yapılandırma dosyasına sahip değildir. Web2py'nin tasarımı, raylar üzerinde yakut ve Django çerçeveler. Bu çerçeveler gibi, web2py de şunlara odaklanır: hızlı gelişim, iyilik yapılandırma yerine kongre yaklaşır ve takip eder model görünüm denetleyici (MVC) mimari desen.

Genel Bakış

Web2py bir tam yığın çerçeve aşağıdakiler dahil tüm ana işlevler için yerleşik bileşenlere sahip olmasıyla:

Web2py sesi teşvik eder yazılım Mühendisliği gibi uygulamalar

Web2py, WSGI protokol, Python odaklı protokol iletişim arasında Web sunucusu ve web uygulamaları. Ayrıca, CGI ve FastCGI protokoller ve şunları içerir: çok iş parçacıklı, SSL -etkinleştirilmiş Roket[6] wsgiserver.

Ayırt edici özellikleri

Web tabanlı entegre geliştirme ortamı (IDE)

Herşey gelişme, hata ayıklama, test yapmak, bakım ve uzaktan veritabanı yönetimi (isteğe bağlı olarak) üçüncü taraf araçları olmadan, bir web arayüzü aracılığıyla, kendisi bir web2py uygulaması aracılığıyla gerçekleştirilebilir. Uluslararasılaştırma (dil eklemek ve çevirileri yazmak) da buradan yapılabilir IDE. Her uygulamanın otomatik olarak oluşturulmuş bir veritabanı yönetim arayüzü vardır. Django. Web IDE ayrıca web tabanlı testleri de içerir.

Uygulamalar ayrıca şuradan da oluşturulabilir: Komut satırı veya diğer IDE'lerle geliştirilmiştir.[7] Diğer hata ayıklama seçenekleri:[8]

  • Wing IDE web2py uygulamalarının grafiksel hata ayıklamasına izin verir[9] web tarayıcınızdan onunla etkileşim kurduğunuzda, değişkenleri inceleyebilir ve değiştirebilir, işlev çağrıları vb. yapabilirsiniz.
  • Tutulma /PyDev - Aptana PyDev eklentisine sahip Eclipse - web2py'yi de destekler.[10][11]
  • Genişletilebilir pdb hata ayıklayıcı, Python'un standart kütüphanesinin bir modülüdür.
  • Platformdan bağımsız açık kaynaklı Winpdb hata ayıklayıcı ile uzaktan hata ayıklama gerçekleştirilebilir[12] bitmiş TCP / IP, şifreli bağlantı yoluyla.[13]

Selam Dünya en basit biçiminde web2py ile program (basit web sayfası[14] şablonsuz) şöyle görünür:

def Merhaba():    dönüş 'Selam Dünya'

Web2py, saf Python tabanlı şablon dili hayır ile girinti gereksinimleri ve sunucu tarafı Belge Nesne Modeli (DOM Şablon sistemi web2py olmadan çalışır.[15] Joomla 1.x şablonları web2py düzenlerine dönüştürülebilir.[16]

Web2py ayrıca iki biçimlendirme kitaplığı içerir: markdown2 metinden HTML'ye filtre, Markdown HTML'ye biçimlendirme anında; ve markdown'dan ilham alan ancak tabloları, html5 video / sesi ve oembed protokolünü destekleyen markmin.

Bir kontrolör bir görünüm olmadan, denetleyici tarafından döndürülen değişkenleri işleyen genel bir görünümü otomatik olarak kullanır ve HTML yazmadan önce bir uygulamanın iş mantığının geliştirilmesini sağlar. Varsayılan bir şablon kullanan "Merhaba Dünya" örneği:

def Merhaba():    dönüş dikte etmek(selamlama='Selam Dünya')

Bir eylemin dict () çıktısı, sayfa bir .html uzantısıyla istenirse HTML'de, sayfa bir .json uzantısıyla istenirse JSON'da, .xml ile istenirse XML'de otomatik olarak oluşturulur. Jsonp, rss, ics, google maps vb. Dahil diğer protokolleri destekler ve genişletilebilir.

İşte bir tabloyu tanımlayan ve oturum açmış kullanıcılara bir ızgara sunan daha karmaşık bir kod örneği:

db.define_table('şey',Alan('isim',geçersiz değil=Doğru))@auth.gerektirir_login()def Merhaba():    dönüş dikte etmek(Kafes = SQLFORM.Kafes(db.şey))

Bilet sistemi

Her web2py uygulaması bir bilet sistemi:

  • Bir hata oluşursa, günlüğe kaydedilir ve kullanıcıya bir bilet verilir. Bu, hata takibine izin verir.
  • Hatalara ve kaynak koduna yalnızca tarihe veya istemci IP'sine göre hataları arayabilen ve alabilen yönetici erişebilir. Hiçbir hata, kodun kullanıcılara ifşa edilmesine neden olamaz.

Taşınabilir cron

Cron, arka planda yinelenen görevler oluşturmak ve çalıştırmak için bir mekanizmadır. Uygulamaya özel bir Crontab standart crontab formatında olan dosya. Üç çalışma modu mevcuttur:

  • Yumuşak cron: cron rutinler web sayfası içeriği sunulduktan sonra kontrol edilir, yürütme hassasiyetini garanti etmez. Ayrıcalıksız Apache CGI / WSGI kurulumları için.
  • Sert cron: bir cron Konu web2py başlangıcında başlar. Windows ve Rocket / bağımsız web2py kurulumları için.
  • System cron: cron işlevleri, Komut satırı, genellikle sistem crontabından. Unix / Linux sistemleri ve şu anda web2py çalışmıyor olsa bile cron tetikleyicilerinin yürütülmesi gereken yerler için; sistem crontab dosyasına erişiminiz varsa CGI / WSGI kurulumları için de iyidir.

Planlayıcı

2.3 sürümünden bu yana, web2py bir ana / çalışan zamanlayıcı ile birlikte geldiğinden cron kullanımı önerilmemektedir. İşler modellerde tanımlanabilir ve veritabanında bir girdi oluşturularak planlanır. Kullanıcılar, görevleri arka planda alan ve yürüten iş süreçlerini başlatabilir. Program cron'dan daha iyidir çünkü daha fazla parametre (başlangıç ​​zamanı, durma zamanı, tekrar sayısı, hata durumunda deneme sayısı) belirlemeye ve sabit kaynak kullanımı dahilinde daha iyi bir iş çıkarmaya izin verir.

Bayt kodu dağılımı

Web2py dağıtım için web uygulamalarını derleyebilir bayt kodu kaynak kodu olmadan derlenmiş form. Görünümleri için özelleştirilmiş şablon dilleri kullanan çerçevelerin aksine, Web2py, saf Python kodu olduğu için görünüm kodunu bayt kodu olarak da derleyebilir.

Küresel Çevre

Web2py, Python web çerçeveleri dünyasında benzersizdir çünkü modeller ve denetleyiciler içe aktarılmaz, çalıştırılır. Modül değiller. Her HTTP isteğinde başlatılan tek bir küresel ortamda yürütülürler. Bu tasarım kararının artıları ve eksileri vardır.

En büyük profesyonel, özellikle hızlı prototipleme için geliştirme kolaylığıdır. Diğer bir profesyonel ise, bu ortamda tanımlanan tüm nesnelerin her HTTP isteğinde temiz bir şekilde sıfırlanması ve hiçbir zaman istekler arasında paylaşılmamasıdır. Bu, geliştiricinin bir nesnenin durumunu değiştirme konusunda endişelenmesine (örneğin bir veritabanı alanının okunabilir özelliği) veya diğer eşzamanlı isteklere veya diğer uygulamalara sızan bir değişiklik hakkında endişelenmesine gerek olmadığı anlamına gelir. Üçüncü bir avantaj, aynı modüllerin farklı sürümlerini veya aynı ada sahip farklı modülleri kullansalar bile, web2py'nin aynı örnek altında birden fazla uygulamanın bir arada bulunmasına izin vermesidir.

Global ortamın temel dezavantajı, model dosyalarının ve denetleyici dosyalarının modüller olmaması ve yürütme sırasının önemli olmasıdır (koşullu modeller kullanılarak belirtilebilmesine rağmen). Adlandırma çakışmasının, normal Python modüllerine göre meydana gelmesi daha olasıdır. Bazı standart Python geliştirme araçları, modellerde ve denetleyicilerde tanımlanan nesneleri anlayamayabilir. Dahası, geliştiriciler, modellerdeki kodun her istekte yürütüldüğünün ve bunun bir performans kaybına neden olabileceğinin farkında olmalıdır. Web2py'deki hiçbir şey, geliştiricilerin normal Python modüllerini (modelsiz yaklaşım) kullanmasını ve içe aktarmasını engellemez ve bu amaçla web2py, mevcut istekle ilişkili nesnelere erişimi kolaylaştırmak için bir iş parçacığı yerel nesnesi (geçerli) sağlar. Yine de bu durumda geliştiricinin, diğer çerçevelerin karşılaştığı aynı tuzakların farkında olması gerekir: bir modülde tanımlanan bir nesnenin durumunu değiştirmek, diğer eşzamanlı istekleri etkileyebilir.

Diğer bir eksi ise, modeller ve denetleyiciler sınıf tabanlı olmadığından, özellikle bir üst denetleyiciden miras alınamaması (örneğin Ruby on Rails'deki ApplicationController) ortak denetleyici işlevselliğine tekrar tekrar başvurulması gerektiği anlamına geldiğinden, verimli kod yeniden kullanımının zorlaşmasıdır. tüm denetleyici dosyalarında.

Desteklenen ortamlar

İşletim sistemleri, Python sürümleri ve uygulamaları, sanal makineler, donanım

web2py çalışır pencereler, Windows CE telefonlar Mac, Unix /Linux, Google Uygulama Motoru, Amazon EC2 ve Python 2.7 / 3.5 / 3.6 / pypy aracılığıyla neredeyse tüm web barındırma.[17]

Web2py'nin mevcut ikili sürümü (Windows veya Mac için) Python 2.7'yi içerir, ancak kaynak sürümü 2.7 ve 3.5+ üzerinde çalıştırılabilir. Python 2.6 desteği 2017'de kaldırıldı.

web2py, v1.64.0 sürümünde değiştirilmemiş olarak çalıştığından Java ile Jython 2.5, bilinen herhangi bir sınırlama olmaksızın.[18]

web2py kodu ile çalışabilir IronPython açık .AĞ.[19] Sınırlamalar:

  • Hayır csv modül (yani veritabanı G / Ç yok);
  • hiçbir üçüncü taraf veritabanı sürücüsü yok (hatta SQLite yani hiç veritabanı yok);
  • yerleşik web sunucusu yok (kaldırarak saklamadığınız sürece sinyaller ve Kerestecilik).

Web2py ikili programı[20] -den kaçmak USB sürücüsü veya Portable Python gibi bağımlılıkları olmayan taşınabilir bir sabit sürücü.

Web sunucuları

Web2py isteklere hizmet verebilir HTTP ve HTTPS yerleşik Rocket sunucusu ile,[21] ile Apaçi,[22] Lighttpd,[23] Cherokee,[24] Hiawatha, Nginx ve neredeyse tüm diğer web sunucuları aracılığıyla CGI, FastCGI, WSGI, mod_proxy,[25][26][27] ve / veya mod_python.

IDE'ler ve hata ayıklayıcılar

Bazı web2py geliştiricileri, metin editörleri gibi Vim, Emacs veya TextMate Web2py ayrıca yerleşik bir web tabanlı IDE'ye sahiptir. Diğerleri, hata ayıklama, yeniden düzenleme vb. Sağlayan daha özel araçları tercih eder.

Veritabanı yönetimi

Veritabanı soyutlama katmanı (DAL ) web2py dinamik ve şeffaf bir şekilde SQL sorguları oluşturur ve veritabanına özgü SQL komutlarına ihtiyaç duymadan birden çok uyumlu veritabanı arka ucunda çalışır (ancak SQL komutları açıkça verilebilir).

SQLite Python'a dahildir ve varsayılan web2py veritabanıdır. Bir bağlantı dizesi değişikliği, bağlantıya izin verir Firebird, IBM DB2, Informix, Ingres, Microsoft SQL Sunucusu, MySQL, Oracle, PostgreSQL, ve Google Uygulama Motoru (GAE) bazı uyarılarla. Özellikler:

  • Çoklu veritabanı bağlantıları.
  • Otomatik tablo oluşturur ve değiştirir.
  • Otomatik işlemler.
  • Dağıtılmış işlemler:
    • PostgreSQL v8.2 ve üzeri ile web2py v1.17'den beri,[30][31] çünkü API sağlar iki aşamalı taahhütler.
    • Firebird ve MySQL (deneysel) ile web2py v1.70.1'den beri.
  • GAE ilişkisel bir mağaza değildir, ancak web2py belirli işlemleri taklit eder.

DAL hızlıdır, en azından aşağıdakilerle karşılaştırılabilir: SQLAlchemy ve Fırtına.[32]

Web2py bir DAL uygular, bir ORM. Bir ORM haritalar veritabanı tabloları sınıflar veritabanı katmanından (örneğin, bir Kullanıcı sınıfı veya bir PurchaseOrder sınıfı) mantıksal soyutlamaları temsil eder ve kayıtları örnekler bu sınıfların. DAL bunun yerine veritabanı tablolarını ve kayıtlarını, daha yüksek düzey soyutlamalar yerine kümeleri ve kayıtları temsil eden sınıfların örnekleriyle eşler. Çok benzer sözdizimi bir ORM'ye ancak daha hızlıdır ve hemen hemen tüm SQL ifadelerini DAL ifadelerine eşleyebilir. DAL, web2py'nin geri kalanından bağımsız olarak kullanılabilir.[33]

DAL söz diziminin bazı örnekleri şunlardır:

db = DAL('postgresql: // kullanıcı: şifre @ localhost / db', havuz büyüklüğü=10)db.define_table('kişi',Alan('isim'),Alan("resim","yükle"))db.kişi.eklemek(isim='Martin', görüntü=açık('dosyaadı.png'))satırlar = db((db.kişi.isim=='Martin')|db.kişi.isim.içerir('T')).seç(tarafından sipariş=db.kişi.isim.aşağı())

DAL'ın en son sürümü, Spatialite ve PostGIS ile 2D GIS işlevlerini destekler. Mevcut API, olası bir 3D API'ye geçiş nedeniyle deneyseldir.

Otomatik veritabanı geçişleri

web2py veritabanını destekler göçler —Bir tablonun tanımını değiştirin ve web2py tabloyu buna göre DEĞİŞTİRİR. Taşıma işlemleri otomatiktir, ancak herhangi bir tablo için devre dışı bırakılabilir ve bir uygulama canlı dağıtım için hazır olduğunda geçiş genellikle devre dışı bırakılır. Değişiklikler belgelenerek geçişler ve geçiş girişimleri günlüğe kaydedilir.

Sınırlamalar:

  • SQLite tabloyu değiştiremez ve bir sütun türünü değiştiremez, bunun yerine yeni değerleri yeni türe göre saklar.
  • GAE'nin alter-table kavramı yoktur, bu nedenle geçişler sınırlıdır.

Lisanslar

Web2py kodu altında yayınlandı GNU Daha Az Genel Kamu Lisansı (LGPL) sürüm 3, web2py sürüm 1.91.1'den itibaren.[34]

1.91.1 sürümünden önceki Web2py kodu, GNU GPL v2.0 ticari istisna dışında.

Web2py ile dağıtılan çeşitli üçüncü taraf paketlerinin genellikle kendi lisansları vardır. kamu malı, MIT veya BSD -tip lisanslar. Web2py ile oluşturulan uygulamalar LGPL lisansı kapsamında değildir.

Web2py'nin telif hakkı Massimo DiPierro'ya aittir. Web2py ticari markasının sahibi Massimo DiPierro.

Ödüller

2011 yılında InfoWorld web2py, en iyi altı Python web çerçevesi arasında en yüksek sırada yer aldı ve web2py, en iyi açık kaynak uygulama geliştirme yazılımı için 2011 Bossie ödülünü aldı. 2012'de web2py, InfoWorld Yılın Teknolojisi ödülü.[35][36]

Yayınlar

web2py Kitabı

Temel web2py dokümantasyonu Resmi web2py Kitabı'dır. Massimo DiPierro. Kılavuz tam bir web2py uygulamasıdır ve çevrimiçi olarak ücretsiz olarak kullanılabilir,[37] PDF formatında veya basılı biçimde.

  • 1. Baskı: baskısı tükenmiş. Wiley; 16 Eylül 2008; 256 sayfa; ISBN  978-0-470-43232-7.
  • 2. Baskı: web2py Kılavuzu. Wiley; 26 Ağustos 2009; 341 sayfa; ISBN  978-0-470-59235-9.
  • 3. Baskı: Lulu; 25 Eylül 2010 357 sayfa.
  • 4. Baskı: Lulu; 9 Aralık 2011 583 sayfa.
  • 5. Basım: PDF Kopyası; 3 Mart 2013 614 sayfa; ISBN  978-0-578-12021-8.
  • en son çevrimiçi kaynaklar: GitHub'da[38]

Çevrimiçi belgeler

Çevrimiçi dokümantasyona web2py ana sayfasından bağlantı verilir. yemek kitabı videolar, etkileşimli örnekler, etkileşimli API referansı, epydoc'lar (eksiksiz kitaplık referansı), SSS, kopya kağıdı, çevrimiçi araçlar vb.

  • Web2py için hile sayfası.
  • web2pyslices, movuca sosyal ağı kullanılarak web2py'de yayınlanan tarifler.
  • Web2py'de Hızlandırılmış Kurs (5 bölümlük seri).
  • Web2py slaytları (eski).

Videolar

  • web2py Kurumsal Web Çerçevesi Eğitimi.
  • web2py "Shootout" eğitici video.
  • Google uygulama motorunda web2py.
  • web2py: Temel bir web uygulaması oluşturun, düzenleyin ve dağıtın.

Basılı

  • "web2py uygulama geliştirme yemek kitabı", Packt, 2012
  • Web2py ile web programlama; Python Dergisi; Marco Tabini & Associates, Inc.; Haziran 2008

Arka fon

Destek

Topluluk desteği, web2py bilgi tabanı, Google Grupları'ndaki web2py posta listesi ve # web2py kanal serbest mod.[39] 2009-10-02 itibariyle, ticari web2py desteği dünya çapında on beş şirket tarafından sağlanmaktadır.[40]

Geliştiriciler

Web2py'nin baş geliştiricisi, bir doçent olan Massimo DiPierro'dur. Bilgisayar Bilimi -de DePaul Üniversitesi içinde Chicago. 2011 itibariyle, web2py ana sayfasında 70'in üzerinde "ana katkıda bulunan" listelenmiştir.[41]

Geliştirme kaynak kodu

Web2py geliştirme kaynak kodu ana depodan edinilebilir:

Web2py'de bulunan üçüncü taraf yazılımı

Tarih ve adlandırma

Web2py'nin ilk genel sürümü için kaynak kodu, 2007-09-27'de GNU GPL v2.0 altında yayınlandı. Massimo DiPierro olarak Kurumsal Web Çerçevesi (EWF). Ad çakışmaları nedeniyle ad iki kez değiştirildi: EWF v1.7'yi Gluon v1.0 ve Gluon v1.15'i web2py v1.16 izledi. Lisans, 2010-12-21'de web2py 1.91.1 sürümünden itibaren LGPLv3 olarak değiştirildi.

Web2py üzerine kurulu uygulamalar

Notlar

  1. ^ "VERSION için Geçmiş".
  2. ^ Web2py (2013), web2py nedir ?, web2py.com, 11 Ekim 2013 tarihinde alındı, <http://www.web2py.com/init/default/what >
  3. ^ Web2py, v1.63'ten beri birden fazla protokol konuşuyor
  4. ^ SOAP'u web2py ile kullanma
  5. ^ Akıllı Web Tabanlı Formlar Yazma
  6. ^ Rocket Web Sunucusu
  7. ^ Web2py çevrimiçi IDE ile Hepsi Metin! Firefox eklentisi ve Ulipad (açık kaynak Python IDE)
  8. ^ Web2py uygulamalarında nasıl hata ayıklanır?
  9. ^ Wing IDE, web2py için hata ayıklamayı destekler
  10. ^ Eclipse / PyDev, web2py için hata ayıklamayı destekler
  11. ^ Eclipse'de web2py'ı kullanma
  12. ^ Winpdb ile TCP / IP üzerinden uzaktan hata ayıklama yapılabilir
  13. ^ Winpdb'de şifreli iletişim
  14. ^ Web2py ile en basit web sayfası: "Merhaba Dünya" örneği
  15. ^ Web2py şablonlarını web2py olmadan kullanma
  16. ^ Joomla şablonlarını web2py ile kullanma
  17. ^ http://web2py.com/init/default/what
  18. ^ Web2py, Jython kullanarak Java ve J2EE üzerinde tam olarak çalışır
  19. ^ Web2py, kısıtlamalarla .NET üzerinde IronPython ile çalışır
  20. ^ Bir USB flash sürücü üzerinde web2py Windows ikili ile MySQL
  21. ^ Yerleşik SSL sunucusu nasıl çalıştırılır
  22. ^ Apache ve mod_ssl ile Web2py
  23. ^ Lighttpd ve FastCGI ile Web2py
  24. ^ Cherokee ile Web2py
  25. ^ Apache Modülü mod_proxy
  26. ^ Mod_proxy ile Web2py
  27. ^ Mod_proxy ve mod_proxy_html ile Web2py
  28. ^ Eric IDE Projesi
  29. ^ Wing IDE'yi web2py ile kullanma
  30. ^ PostgreSQL ile dağıtılmış işlemler
  31. ^ PostgreSQL ile dağıtılmış işlemler - daha fazla ayrıntı
  32. ^ ORM Benchmark
  33. ^ Web2py DAL'ı web2py olmadan kullanma
  34. ^ web2py Lisans Sözleşmesi
  35. ^ Grehan, Rick. "Python Sütunları: Altı Python Web çerçevesi karşılaştırıldı". InfoWorld. Alındı 2017-11-30.
  36. ^ personel, InfoWorld Yorumları. "InfoWorld 2012 Yılın Teknolojisi Ödülü sahipleri". InfoWorld. Alındı 2017-11-30.
  37. ^ "web2py - Resmi çevrimiçi kılavuz". web2py.com. Alındı 2018-11-14.
  38. ^ "web2py / web2py-kitap". GitHub. Alındı 2018-11-14.
  39. ^ IRC # web2py kanalı
  40. ^ Web2py için ticari destek
  41. ^ Web2py'ye katkıda bulunanların listesi

Dış bağlantılar