2009-11-08 15 views
10

Django form sisteminden geçmeden bir giriş dizesini temizlemek için Django kullanmanın önerilen bir yolu var mı?django Form sınıflarını kullanmadan giriş dizelerini temizleyin

Bu yüzden, AJAX aracılığıyla form girdisi ileten kod yazıyorum, bu yüzden tüm Form modeli django tekliflerini atlarım. Ama veri tabanına gönderilmeden önce girişi temizlemek istiyorum.

+0

Formlar bunun için geçerlidir. Formu görüntülemek için kullanıp kullanmadığınızı dikkate almadan, girişi doğrulamak için bir Form kullanabilirsiniz. –

+0

Büyük olasılıkla aşağıdaki gibi ek alanlara geçmek isteyeceksiniz: http://stackoverflow.com/a/9663056/895245 –

cevap

15

Django Form modelleri, yalnızca form oluşturma işlemleriyle ilgili değildir; bunlar, formunun olmasını istediğiniz form (GET/POST) girdisi işleme ve dezenfekte etme hakkında daha fazla bilgi sahibidir. AJAX isteğinizden gelen POST veya GET verileri sunucunuza ulaştığında, form verisinden esas olarak ayırt edilemez. AJAX isteğiniz'un bir modeli olan bir Form modeli oluşturmayı savunuyorum. bir örnek POST

Think:

POST /login.jsp HTTP/1.1 
Host: www.mysite.com 
User-Agent: Mozilla/4.0 
Content-Length: 27 
Content-Type: application/x-www-form-urlencoded 

userid=joe&password=guessme 
AJAX isteği VEYA bir formdan gelmiş olabilir

, zaman o gerçekten önemli değil sunucu vurur! genellikle çünkü Tabii onlar Formu modelleri denilen nereye GET veya POST verisi gelir, ama öyle değil sizin olsun AJAX isteği temsil edecek bir form modeli oluşturmak Bir formda :)

uzak olmak var onunla birlikte gelen tüm kancalar ve sanitizasyon ve hepsi biraz daha "django-esque". Yorumunuza ilgili

Güncelleme:

Ben Birden form sınıfları olurdu düşünün. Açıkçası, sisteminizin nasıl tasarlandığını bilmiyorum, ancak yapabileceğim tavsiyeyi vereceğim.

Dediğiniz gibi, verilerinizi dezenfekte etmek için bunu kullanacaksınız, böylece gönderdiğiniz sınıflara göre Form sınıflarınızı tanımlamak isteyeceksiniz. Örneğin, bir Form Sınıfı olacak olan Ad, E-posta ve Yorum Gövde verileriyle bir yorum gönderen bir AJAX isteğim varsa. Başka bir AJAX isteğim varsa, başka bir Form sınıfı olacak Başlık, Yazar ve ArticleBody gönderen yeni bir makale gönderir.

Tüm AJAX isteklerinizi bir formata ihtiyaç duymayacaksınız, eğer bir AJAX çağrınız varsa, bir form olarak kabul edemeyeceğiniz bir yorumunuz varsa, (tahmin ediyorum) herhangi bir veriyi dezenfekte etmek.

+0

Matt, sistemim veritabanındaki verileri güncellemek için kapsamlı olarak AJAX kullanıyor. Her ajax isteği için türetilmiş bir form sınıfı oluşturulmasını veya mümkünse, herhangi bir girdiyi işleyen bir genel kullanım ajax türetilmesini öneriyor musunuz? – Karim

+1

Cevabımı yanıt olarak düzenledim, bir yorumda bulmaya çalışmaktan daha kolay oldu :) –

+1

+1: Formlar giriş temizliği içindir. "2. Gönderilen verileri bir doğrulama kuralları kümesine karşı kontrol edin." Web hizmetleri girdimizi doğrulamak için Formları kullanırız. –