Sanic-WTF - Sanic meets WTForms
Project description
Sanic-WTF makes using WTForms with Sanic and CSRF (Cross-Site Request Forgery) protection a little bit easier.
Quick Start
Installation
pip install --upgrade Sanic-WTF
How to use it
Intialization (of Sanic)
from sanic import Sanic
app = Sanic(__name__)
# either WTF_CSRF_SECRET_KEY or SECRET_KEY should be set
app.config['WTF_CSRF_SECRET_KEY'] = 'top secret!'
@app.middleware('request')
async def add_session_to_request(request):
# setup session
Defining Forms
from sanic_wtf import SanicForm
from wtforms import PasswordField, StringField, SubmitField
from wtforms.validators import DataRequired
class LoginForm(SanicForm):
name = StringField('Name', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Sign In')
That’s it, just subclass SanicForm and later on passing in the current request object when you instantiate the form class. Sanic-WTF will do the trick.
Form Validation
from sanic import response
@app.route('/', methods=['GET', 'POST'])
async def index(request):
form = LoginForm(request)
if request.method == 'POST' and form.validate():
name = form.name.data
password = form.password.data
# check user password, log in user, etc.
return response.redirect('/profile')
# here, render_template is a function that render template with context
return response.html(await render_template('index.html', form=form))
For more details, please see documentation.
License
BSD New, see LICENSE for details.
Links
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Sanic-WTF-0.6.0.tar.gz
(11.7 kB
view hashes)
Built Distribution
Close
Hashes for Sanic_WTF-0.6.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 115f70b17de9f274c3f80ccd240ce615bc00f4d2c00566b68418aa2f09e0ea2d |
|
MD5 | a0a2e4b8118f0768b2fcf0805d96cc6d |
|
BLAKE2b-256 | 3bb0a4ce8e335da369bd188f4fa1600efc23d2d137c856b196ef4e1e3d7ceb31 |