· 6 years ago · Jan 28, 2019, 10:16 PM
1UndefinedError: 'csrf_token' is undefined
2
3
4#main.py
5
6from flask import Flask
7from flask import request
8from flask import render_template
9from flask import session
10from flask import url_for
11from flask import redirect
12from flask import flash
13from flask import copy_current_request_context
14from flask import Markup
15from flask_wtf import CSRFProtect
16from config import DevelomentConfig
17
18
19app = Flask(__name__)
20app.config.from_object(DevelomentConfig)
21csrf = CSRFProtect()
22
23
24@app.route('/login', methods=['GET','POST'])
25def login():
26 form_login = forms.Login(request.form)
27 alerta = ''
28 if request.method == "POST" and form_login.validate():
29 parametros
30
31 if usuario is not None and usuario.verificar_contrasena(contrasena):
32 algo
33 else:
34 algo
35
36 title = 'Login'
37 return render_template('login.html',title=title,form=form_login,alerta=alerta)
38
39
40
41
42if __name__ == '__main__':
43 csrf.init_app(app)
44 db.init_app(app)
45 with app.app_context():
46 db.create_all()
47 app.run(host='127.0.0.1', port=8087, debug=True)
48
49
50#form.html
51{% block content %}
52 {% from '_macro_forms.html' import mostrar_formulario %}
53 <div id='cont_login'>
54 <form class="form-login formulario" method="POST" novalidate>
55 <input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
56 <div class="form-group" >
57 <h3>Iniciar Sesión</h3>
58 </div>
59 <div class="form-group">
60 {{ mostrar_formulario(form.email) }}
61 </div>
62 <div class="form-group">
63 {{ mostrar_formulario(form.contrasena) }}
64 </div>
65 <div class="form-group">
66 <button type="submit" class="btn btn-info input_f_login">Ingresar</button>
67 </div>
68 <div class="form-group">
69 <a class="link" href='/recuperar_contrasena'>¿Olvidó su contraseña?</a>
70 </div>
71 {% with mensajes = get_flashed_messages() %}
72 {% if mensajes %}
73 {% for mensaje in mensajes %}
74 <div class="alerta alert alert-{{ alerta }} text-center">
75 {{ mensaje }}
76 </div>
77 {% endfor %}
78 {% endif %}
79 {% endwith %}
80 </form>
81 </div>
82
83{% endblock %}
84
85
86
87#DevelopmentConfig.py
88
89class Config(object):
90 WTF_CSRF_ENABLED = True
91 SECRET_KEY = 'cualquierpalabra'