J'utilise Flask avec Flask-WTF. J'ai décidé de désactiver la protection CSRF dans les tests, car tester avec elle est un peu gênant et je ne veux pas tester Flask/Flask-WTF. Cependant, cela soulève un autre problème :

jinja2.exceptions.UndefinedError: 'trip_planner.auth.forms.LoginForm object' has no attribute 'csrf_token'

Le modèle incriminé est le suivant :

{% extends "base.html" %}

{% block main %}
    <form method="POST">
        {{ form.csrf_token }}
        <div>
            {{ form.username.label }}{{ form.username }}
        </div>
        <div>
            {{ form.password.label }}{{ form.password }}
        </div>
        <div>
            <button type="submit">Login</button>
        </div>
    </form>
{% endblock %}

Ma compréhension est la suivante : si CSRF est complètement désactivé, WTForms ne prend pas la peine d'injecter un champ de jeton CSRF dans le formulaire.

Puis-je faire en sorte que Jinja ignore cette erreur ou évite ce problème autrement ?

0
art-solopov 10 févr. 2020 à 11:35

1 réponse

Meilleure réponse

Après quelques lectures, je pense avoir trouvé une solution.

Remplacement de form.csrf_token par form.hidden_tag rendrait le champ CSRF s'il est présent sans dépendre du nom du champ.

0
art-solopov 10 févr. 2020 à 08:49