Одна и та же форма FlaskWTF на каждом просмотре / странице - PullRequest
0 голосов
/ 30 мая 2020

в моем Flask Project я настроил шаблон basepage.html Jinja, от которого наследуются все остальные страницы. В этом basepage.html я хочу, чтобы вверху была панель поиска, чтобы она также отображалась на каждой странице, унаследованной от нее.

Ввод из этой формы поиска (это форма, даже лучший способ сделать это?) должен обрабатываться функцией маршрутизации search(), которую я определил следующим образом:

views.py

@app.route('/')
@app.route('/dashboard')
def dashboard():
    return render_template('Dashboard.html') #Dashboard.html inherits from basepage.html

@app.route('/search', methods=['GET' ,'POST'])
def search():
    search_query = #input from search-bar
    result = #get data matching search_query from database
    return render_template('Search.html', results = results) #Search.html extends basepage.html

forms.py отрывок:

class Search(FlaskForm):
    search_query = StringField('Search for ...')
    submit = SubmitField('Search')

Есть ли способ разместить форму поиска на каждой странице, поэтому, когда я ввожу свой запрос в панель в верхней части формы панели инструментов и нажимаю клавишу ВВОД, search_query обрабатывается представлением search()?

1 Ответ

2 голосов
/ 30 мая 2020
• 1000 *
{% include 'includes/my_searchbar.html' %}

Если панель поиска включена в базу, а все остальные ваши шаблоны наследуются от базы, то поиск будет включен на всех страницах.

Все ваши маршруты также должны иметь класс формы Search (), чтобы они имели доступ к форме, поэтому вам нужно будет изменить свои маршруты примерно так:

from app.forms import Search #if you defined Search in /app/forms.py

@app.route('/dashboard')
def dashboard():
    search_form = Search() #initialize an instance of the form
    return render_template('Dashboard.html', search_form=search_form)

Затем вы можете использовать search_form в партиале includes/my_searchbar.html для рендеринга формы. Может быть что-то вроде:

<form class="form" method="post" role="form">
    {{ search_form.hidden_tag() }}
    {{ search_form.search_query }}
    {{ search_form.submit }}
</form>
...