2009-03-09 19 views
2

CSS ile bir form oluşturmaya çalışıyorum. Her şeyden önce, resmi belgeler dışında tam bir örnek görmedim, bu yüzden blog girişlerini veya makalelerini takdir ediyorum.Şekillendirme formları ve django form değerleri

benim formda Şimdi

, tipik bir Charfield böyle html üzerinde tercüme:

<input type="text" name="artists" id="id_artists" /> 

benim form bazı sahadaki hatalar varsa önceki Charfield değerini hatırlar ve gider:

<input type="text" name="artists" value="Pink Floyd" id="id_artists" /> 

Bu değeri (value="Pink Floyd") django formlarında nasıl alabilirim? Alanımın {{form.artists}} olduğunu, {{form.artists}} alanını {{form.artists.label}} etiketi olarak, {{form.artists.errors}} ve {{form.artists.help_text}} olarak kullanabilirim, ancak bu değere ne dersin?

Şimdiden teşekkürler!

cevap

4

Otomatik olarak oluşturmak için django'ya güvenmek yerine, giriş alanını özellikle oluşturun. gibi

şey:

<input type="text" name="artists" id="id_artists" value="{{form.artists.title}}" /> 

+0

Merhaba Steerpike, bu iş yapacak, ancak formda başka bir alanda hatalar olduğunda bunu sağlamak için hala bu değeri almam gerekiyor - aksi takdirde boşluk oluşur. –

2

Sen data özelliğinden alanının geçerli değerini alabilirsiniz çalışması gerekir:

{{ form.artists.data }} 

Django belgeleri söz göremiyorum bu, ama çalışıyor ...

0

Ayrıca form verisiyle bir şeyler yapmak için form sınıfına ek doğrulama ekleyin. djangobook.com Gönderen:

from django import forms 

class ContactForm(forms.Form): 
    subject = forms.CharField(max_length=100) 
    email = forms.EmailField(required=False) 
    message = forms.CharField(widget=forms.Textarea) 

    def clean_message(self): 
     message = self.cleaned_data['message'] 
     num_words = len(message.split()) 
     if num_words < 4: 
      raise forms.ValidationError("Not enough words!") 
     return message 

clean_message yöntemin İçerisinde self.cleaned_data sözlüğünü kullanarak belirli bir alanı erişebilirler. Bu sözlük doğrulanmış herhangi bir form için kullanılabilir.

Alanı döndürdüğünüzden emin olun, bu durumda message veya None döndürülür.