2013-07-08 22 views
1

我有兩個表格來在我的應用上創建書籍和作者。只有在所有字段都被填充的情況下,它們才能工作,而我只需要一兩個嚴格要求!flask-wtf在字段空白時不驗證

筆者類:

class AuthorForm(Form): 
familyname = TextField('familyname', validators = [Required()]) 
firstname = TextField('firstname', validators = [Required()]) 
biography = TextAreaField('biography') 
dateofbirth = DateField('dateofbirth') 
placeofbirth = TextField('placeofbirth') 
nationality = TextField('nationality') 
website = TextField('website') 

模板:

<form action="" method="post" name="add_author"> 
    {{form.hidden_tag()}} 
    <p>Veuillez donner son prénom (obligatoire) : {{form.firstname}}</p> 
    <p>Nom de famille (obligatoire) : {{form.familyname}}</p> 
    <p>Nationalité : {{form.nationality}}</p> 
    <p>Lieu de naissance : {{form.placeofbirth}}</p> 
    <p>Date de naissance (Y-m-d): {{form.dateofbirth}}</p> 
    <p>Site web : {{form.website}}</p> 
    <p>Biographie : {{form.biography}}</p> 
    <p><input type="submit" value="Envoyer"></p> 
</form> 
{% endblock %} 

和視圖:

@app.route('/add_author', methods = ['GET', 'POST']) 
def add_author(): 
form = AuthorForm() 
if form.validate_on_submit(): 
    a = Author(firstname= form.firstname.data, 
    familyname= form.familyname.data, 
    nationality= form.nationality.data, 
    dateofbirth= form.dateofbirth.data, 
    placeofbirth = form.placeofbirth.data, 
    website = form.website.data, 
    biography = form.biography.data) 
    db.session.add(a) 
    db.session.commit() 
    return redirect('/index') 
return render_template('add_author.html', title = 'Ajouter un auteur a la base de donnees', form = form) 

回答

2

我用WTForms在燒瓶中的應用程序我建設,我的表格工作正常。但我使用稍微不同的語法:

deadline = TextField('Deadline',[validators.Required()]) 

注意驗證程序中的點符號,也許這是導致您的問題?

我現在檢查了它,結果發現在這種情況下我至少在崩潰過程中寫了這樣的東西。

accept_rules = BooleanField('I accept the site rules', [validators.Required()]) 

如果這不起作用,你可以嘗試簡單地寫:

familyname = TextField('familyname', [Required()]) 

你也可以明確設置驗證是可選的:

biography = TextAreaField('biography', [validators.optional()) 
+0

使用可選的,它的作品!非常感謝 ! – 22decembre

+0

沒問題:)你可以將這個答案標記爲正確的答案,並且如果你喜歡,可以加註。 –