Właśnie zaczynam od Flask/Flask-WTF/SQLAlchemy, a większość przykładowego kodu CRUD widzę osobne szablony do dodawania/edycji. Wydaje się, że powtarzają się dwa szablony z niemal identyczną formą html (np. Books_add.html, books_edit.html). Koncepcyjnie bardziej sensowne jest dla mnie posiadanie jednego szablonu, takiego jak "books_form.html", i po prostu wywołanie render_template na tym samym szablonie z dwóch oddzielnych definicji tras. Nie jestem pewien, jak ją osiągnąć jednak coś takiego:Python Flask-WTF - użyj tego samego szablonu formularza dla operacji dodawania i edycji
@app.route('/books/add')
def add_book():
...
render_template('books_form.html', action = 'add')
@app.route('/books/edit/<id>')
def edit_book(id):
...
render_template('books_form.html', action = 'edit', id = id)
ale nie jestem pewien, czy jestem na dobrej drodze, lub odbiegających od najlepszych praktyk. Każde wejście jest doceniane - konkretne przemyślenia na temat obsługi pojedynczego pliku szablonu, aby poradzić sobie z dodawaniem lub edytowaniem zachowania. Powiązania z przykładami są również mile widziane.
Dzięki!
Dziękujemy! Nie jestem pewien, czy rozumiem odniesienie do render_form - wróciłem do dokumentacji WTForms i Quickstart, nie mogłem go znaleźć. Nie mogę go uruchomić w moim kodzie. Dostaję się tam, dokąd zmierzasz - oddzieliłeś swój szablon formularza nawet bardziej, niż myślałem, co lubię. Może, jeśli możesz rozwinąć nieco więcej tego konkretnego kawałka? – David
Możesz użyć makra jinja do renderowania formularza. Zobacz [to sedno] (https://gist.github.com/Teisman/5653607) - większość kodu, który zobaczysz, nie jest mój. Funkcja 'render' jest po prostu generycznym rendererem formularzy. Jak wskazał Sean, jeśli podążysz tą trasą, musisz przekazać instancję formularza do szablonu. – Teisman
Dzięki! to pomaga wyjaśnić. – David