Sıkı DB / GUI bağlantı için bir piton web uygulaması çerçevesinde?

oy
11

Ben arka uç ve frontendlerinin arasındaki sıkı bağlantının sapkın düşünce bir inancı değilim: Ben bir arka uç hakkında zımni bilgi otomatik olarak kullanıcı arayüzleri oluştururken kullanımını yapılacak mevcut istiyoruz. VARCHAR Kolon, 20 karakter ile bir maksimum varsa Örneğin, GUI otomatik olarak ilgili form alanında en fazla 20 karakter yazarak kullanıcının orada içermeleri gerekir.

Ve ben veritabanı tabloları tanımlamak istediğiniz veya her tablo nedeniyle ORM ekstra sayısal kimliği sütunları olması gerekir bazı hack dayanmaktadır ORMs için güçlü antipati var.

Ben Python veritabanı çerçeveler içine biraz baktım ve ben SQLAlchemy benim zihniyet için en uygun sonuca varabiliriz düşünüyorum.

Şimdi, ben bile bağlamak için benim iştah ile belki bir web uygulaması sqlalchemy (veya eşdeğeri) ile doğal olarak uyan çerçeve ve bulmalıyız. Web uygulaması çerçevesinde ile, vb Pyhons, Django, TurboGears'ın, web2py gibi ürünler / proje demek

Örneğin, ideal olarak mümkün olmalıdır:

  • otomatik olarak uygun bir şekilde aracını seçmek , böylece söylediği takdirde, belirli bir sütun giren veriler için; Kolon, 10 farklı değerlere sahip bir sütun için yabancı anahtar varsa, örneğin, eklendi bir açılan olarak 10 olası değerleri göstermesi gerekir
  • JavaScript form doğrulama kodu otomatik olarak oluşturmasına bir dize bir INTEGER sütununda sona üzere olan bir alana, vb girilir eğer son kullanıcı hızlı hata geribildirim verir
  • Bir otomatik olarak oluşturmasına takvim aracını bir TARİH sütununda sona erecek veri
  • ipucu NULL kısıtlamalar ilgili giriş alanında boş veya boşluk okunur verileri şikayet JavaScript olarak
  • İlgili (basit) maçları javascript doğrulama kodu oluşturmak Slayt-kısıtlamaları
  • kolaylaştırır SQL enjeksiyon önlemek harici edilen verilerin hazırlanmış deyimleri ve / veya doğrulama kullanılarak,
  • kolaylaştırır siteler arası komut dosyası önlemek uygun olduğunda otomatik olarak giden dizeleri kaçış tarafından
  • kısıt isimlerinin faydalanmak bir constrataint ihlal durumunda biraz kullanıcı dostu hata iletileri oluşturmak için

Bütün bu dinamik gerçekleşmesi gerektiğini, bu yüzden masa ayarlamaları otomatik olarak kullanıcı arabirimine yansır - muhtemelen önbelleğe alma mekanizması ile, tüm model introspection performansını öldürmez böylece. Diğer bir deyişle, ben zaten dikkatle benim veritabanında tanımlanmış olan bir XML dosyası (veya benzeri) benim modeli tanımını tekrarlamak istemiyoruz.

Böyle bir çerçeve (bu konuda, ya da herhangi bir dil için) Python için var mıdır? Değilse: Yukarıda kendimi özellikleri bölümlerini eklemeniz durumunda birkaç Python web uygulama çerçevelerinin hangisi şekilde az olacak?

Oluştur 04/09/2008 saat 07:53
kaynak kullanıcı
Diğer dillerde...                            


5 cevaplar

oy
3

Sen django ve özellikle de bir göz olmalıdır newforms ve yönetici modüllerinin. Newforms modülü hata iletileri / kullanıcı için sayfaların otomatik nesil sunucu tarafında doğrulama yapmak için güzel bir olanak sağlamaktadır. Ajax doğrulama eklemek de mümkündür

Cevap 04/09/2008 saat 08:12
kaynak kullanıcı

oy
1

Django modelleri bileşik birincil anahtarlar (bkz desteklemediği inanıyoruz belgeleri ). Ama belki Django SQLAlchemy kullanabilir? Bir google arama yapabilirsiniz belirtir. Django kullanmadıysanız, bu yüzden bilmiyorum.

Sana bir göz at öneririz:

Yukarıda projelerin herhangi birinin herhangi derin bir bilgiye sahip değiliz. Sadece orijinal soru bahseder Ne kadar kendi uygulamalarına birine benzer bir şey eklemeye çalışırken sürecinde duyuyorum. Yukarıdaki liste sadece ben tökezledi ilginç projelerin listesidir.

Python için web uygulama çerçevelerinin gelince, ben TurboGears'ı 2. tavsiye değil diğer çerçeveler herhangi biri ile herhangi deneyime sahip olduğunu, sadece TurboGears'ın gibi ...

Orijinal Sorunun yazarı iyi çalışıyor bir çözüm bulursa, güncelleme veya Konuyu yanıtlayın.

Cevap 04/09/2008 saat 08:42
kaynak kullanıcı

oy
1

TurboGears şu anda kullandığı SQLObject varsayılan olarak ancak birlikte kullanabilirsiniz sqlalchemy . Onlar TurboGears'ta (1.1) sonraki büyük sürümü varsayılan olarak SQLAlchemy kullanmak olacağını söylüyor.

Cevap 07/09/2008 saat 09:03
kaynak kullanıcı

oy
1

Sana bir çerçeve istemek özgünlüğünü biliyorum ama seni buraya kadar ne elde bildirmek düşündüm. Ben sadece bu yüzden bir uzman ama sqlalchemy bu kadar veritabanından neden olmasın haritalar özelliklerin tümü için tipleri vardır olmasıydı aklıma bir şey olmaktan çok uzağım sqlalchemy içine özel bir in-house ORM katmanından Şirketimin web uygulamasını dönüştürme uğramıştır sayfaya çıktılı sağ html yardım için kullanabilirsiniz. Bu yüzden ön uç için arka uç ve Çita şablonları için sqlalchemy kullanan ancak aradaki her şey hala temelde kendi olduğunu.

Biz tam olarak uzlaşma olmadan istiyoruz ve bizim için doğru çalışmak ve tutkal canlarından yazan tüm bitlerini almak için tercih yapar bir çerçeve bulmayı başardılar hiç.

her bir veri türü sqlAlchemy.types.INTEGER vb için Adım 1. ekstra fonksiyon ToHTML (veya birçok belki toHTMLReadOnly ne olursa olsun toHTMLAdminEdit) ekleyin ve sadece bu şimdi bile Hangi verileri bakım gerekmez, html şablonu dönmek zorunda sadece (çita şablona ya da ne hiç çiftleşmiş motoru gibi) sadece yapabileceği bütün bir tablo tükürmek istiyorum senin görüntülendiği yazın.

Adım 2

<table>

<tr>

#for $field in $dbObject.c:

<th>$field.name</th>

#end for

</tr>

<tr>

#for $field in dbObject.c:

<td>$field.type.toHtml($field.name, $field.value)</td>

#end for

</tr>

</table>

Bir öğleden sonra ben okuma güncelleştirme oluşturmak yapmak ve django ait cila ile henüz dışarı veritabanının bizim bütün yönetici bölümü için kodunu silmek ama benim ihtiyaçları için yeterince iyi o zaman daha başardı bu temel yöntemi kullanarak ve potansiyel için piton iç gözlem germe.

3. Adım, sadece Cuma günü üçüncü aşama olan ihtiyacı keşfetti bildiğiniz gibi sadece varchar veri türleri varsayılan metin kutusuna sonra fazla ihtiyacı dosya yüklemek istedi. Tek fark DosyaYolu farklı ToHTML yöntemi vardı nerede olursa ter, sadece DosyaYolu (VARCHAR) için VARCHAR benim tablo tanımında satırları sınıfını overrode. kusursuz çalıştı.

Orada istediğiniz sadece ne yaptığı bir küçültmek sarılı varsa, Bütün bunlar, bunu kullanın.

Yasal Uyarı: Bu kod gece yarısından sonra bellekten yazılı ve muhtemelen alışkanlık işleyen Web sayfasını getirmek oldu.

Cevap 07/09/2008 saat 13:39
kaynak kullanıcı

oy
5

web2py sormak şeylerin çoğu yapar:

Bir alan türü ve doğrulayıcıları dayanarak uygun widget'la alanını hale getirecek. Sen ile geçersiz kılabilirsiniz

db.table.field.widget=...

ve bir üçüncü taraf aracını kullanın.

web2py blok Js bir tamsayı alanı ya da bir çift alanında olmayan bir çift olmayan bir tamsayıyı girmesini kullanıcı sahiptir. saat, tarih ve tarih saat alanları kendi toplayıcı var. sunucu tarafında doğrulama ile bu js doğrulama çalışması (değil bunun yerine).

Orada IS_EMPTY_OR(...)doğrulayıcı.

DAL DB gittiğinde Everthing kaçan beri SQL enjeksiyonu önler.

web2py çünkü aksi belirtilmediği sürece, {{= değişken}}, 'Değişken' kaçan mi XSS önler {{= XML (değişken)}} ya da {{= XML (değişken sterilize = Doğru)}}

Hata mesajı, örneğin doğrulayıcılarının Bağımsız değişkenler

db.table.field.requires=IS_NOT_EMPTY(error_message=T('hey! write something in here'))

T uluslararası içindir.

Cevap 13/10/2008 saat 16:31
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more