2016-11-13 5 views
0

WEB APP를 개발 중이며 어느 시점에서 Polity 테이블에 새 항목을 만들고 싶습니다. 나는 몇몇 날짜를 추가해야 할 때까지 그것을 할 수 있었다. 양식이 잘못된 날짜 형식으로 인해 입력을 수락하지 않습니다.DateForm Python-Flask - [유효한 날짜 값 ']이 아닙니다.

class PoliticForm(FlaskForm): 
    publicName = StringField('Public Name', validators=[DataRequired("Please enter politician public name.")]) 
    completeName = StringField('Complete Name', validators=[DataRequired("Please enter politician complete name.")]) 
    startDate = DateField('Start Date', format='%m-%d-%Y', validators=[DataRequired("Please enter the politician start Date.")]) 
    endDate = DateField('End Date', format='%m-%d-%Y', validators=(validators.Optional(),)) 
    submit = SubmitField('Add Politician', validators=(validators.Optional(),)) 

하지만 내 양식이 의 startDate 필드 나 endDate가 필드의 유효성을 검사 할 수있는 권리 때문에 어떻게 든 DateField 구성 밤은 .. 그것으로

을 살펴 봅시다 나는이 양식을 가지고있다. 이 내 생성 기능입니다 :

@app.route("/create_politician", methods=["GET", "POST"]) 
@login_required 
def create_politician(): 
    form = PoliticForm() 

    if request.method == "POST": 
    print form.validate() 
    flash(form.errors) 
    if form.validate() == False: 
     return render_template('createPolitician.html', form=form) 
    else: 
     print form.startDate.data 
     newpolitician = Politic(form.publicName.data, form.completeName.data, form.startDate.data, form.endDate.data) 
     print form.startDate.data 
     db.session.add(newpolitician) 
     db.session.commit() 
     return redirect(url_for('home')) 

    elif request.method == "GET": 
    return render_template("createPolitician.html", form=form) 

플래시에

(form.errors)
내가 얻을 다음은 :

{ '의 startDate': [ '정치인의 시작을 입력하십시오 날짜 ','endDate가. '[u'Not 유효한 날짜 값']}

models.py

class Politic(db.Model): 
    __searchable__ = ['publicName', 'completeName'] 
    __tablename__ = 'politics' 

    idPolitician = db.Column(db.Integer, primary_key=True) 
    publicName = db.Column(db.String(150)) 
    completeName = db.Column(db.String(300)) 
    startDate = db.Column(db.Date) 
    endDate = db.Column(db.Date) 

    def __init__(self, publicName, completeName, startDate, endDate): 
    self.publicName = publicName.title() 
    self.completeName = completeName.title() 

.html 중에서

<form method="POST" action="/create_politician"> 
     {{ form.hidden_tag() }} 

     <div class="form-group"> 
      {{ form.publicName.label }} 
      {{ form.publicName }} 
     </div> 

     <div class="form-group"> 
      {{ form.completeName.label }} 
      {{ form.completeName }} 
     </div> 

     <div class="form-group"> 
      {{ form.startDate.label }} 
      {{ form.startDate }} 
     </div> 

     <div class="form-group"> 
      {{ form.endDate.label }} 
      {{ form.endDate }} 
     </div> 

     {{ form.submit(class="btn-primary") }} 

     </form> 

어떤 생각은 잘못된 것입니다. 양식에서 요구하는 것과 일치시키기 위해 날짜 입력을 형식화하는 방법이 있습니까?

당신

안부

답변

0

실제로 양식이 그 형식과 유효성을 검사합니다 감사 % Y- % M- % D, 및 필드 정의 형식 = '% M- % D- % Y' 어떤 이유로 든 작동하지 않습니다. - datefield 정의에서 format = '% m- % d- % Y'을 (를) 삭제하십시오. 그러면 플라스크 기본 형식으로 유지하십시오. 보기에서받은 날짜를 인쇄하십시오. % Y- % m- % d 형식으로 지정하십시오.

희망 하시겠습니까?