2015-08-11 17 views
5

Chcę zresetować formularz po jego zatwierdzeniu. Obecnie formularz będzie nadal wyświetlał poprzednie dane po ich przesłaniu i jest ważny. Zasadniczo chcę, aby formularz powrócił do stanu pierwotnego ze wszystkimi polami w czystości. Co to jest poprawne?Wyczyść prawidłowy formularz po jego przesłaniu

@mod.route('/', methods=['GET', 'POST']) 
def home(): 
    form = NewRegistration() 

    if form.validate_on_submit(): 
     #save in db 

     flash(gettext(u'Thanks for the registration.')) 

    return render_template("users/registration.html", form=form) 

Odpowiedz

9

Problem polega na tym, że zawsze renderujesz formularz, niezależnie od tego, jakie dane zostały przekazane, nawet jeśli te dane zostały sprawdzone i zostały przetworzone. Ponadto przeglądarka przechowuje stan ostatniego żądania, więc jeśli odświeżysz stronę w tym momencie, przeglądarka ponownie prześle formularz.

Po pomyślnym wysłaniu formularza, należy przekierować na stronę, aby uzyskać świeży stan.

+0

Nie wiem dlaczego, ale muszę użyć kropki ('.home'). W przeciwnym razie otrzymam podniesienie BuildError (punkt końcowy, wartości, metoda) – user455318

+2

@ user455318, ponieważ twoja trasa jest w projekcie. Możesz także użyć absolutnej 'blueprint_name.home',' '.' jest skrótem dla" aktualnego projektu ". – davidism

Powiązane problemy