Jinja2 получает / импортирует WTF-форму в Basic.html (который включен на каждую другую HTML-страницу) - PullRequest
0 голосов
/ 24 января 2019

Я создал форму с WTF-формами:

class ContactForm(FlaskForm):
    report = TextAreaField('Nachricht', validators=[DataRequired(message="Geben Sie Ihre Nachricht ein")])
    contact_email = TextField('Ihre Email')

Мне нужна эта форма на каждой странице в моем приложении фляги, она находится в нижнем колонтитуле.

Сервер создаетhtml-страницы с render_template:

# Index
@app.route('/', methods=["GET","POST"])
def index():   
    form_contact_us = ContactForm(prefix="contact-us-form") 
    return render_template('index.html', form_contact_us=form_contact_us)

Я обычно даю все формы, которые я использую для render_template.Но если я сделаю это, мне нужно будет реализовать это в КАЖДОЙ функции, которая дает HTML клиенту.Я мог бы сделать это, но я чувствую, что должно быть лучшее и более быстрое решение.Я не смог найти решение сам, может быть, кто-то знает это.

PS:

У меня есть basic.html, который используется каждой другой HTML-страницей.Я использую эту форму в basic.html

1 Ответ

0 голосов
/ 24 января 2019

Самое простое решение - внедрить форму во все шаблоны jinja с помощью context_processor. Это гарантирует, что переменная формы contact_form присутствует во всех ваших шаблонах.

@app.context_processor
def inject_contact_form():
    return dict(contact_form=ContactForm(prefix="contact-us-form"))

В вашем basic.html вы можете отобразить форму как обычно:

{{ contact_form.report.label }}<br>
{{ contact_form.report(size=32) }}
...