Skip to main content

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.fields 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.

Metadata

Release files for Sanic-WTF 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Sanic-WTF 0.7.0
File Size Uploaded
sanic_wtf-0.7.0.tar.gz 6.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for Sanic-WTF 0.7.0
File Interpreter ABI Platform
sanic_wtf-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 12.2 kB

Release files / sanic_wtf-0.7.0.tar.gz

Download URL sanic_wtf-0.7.0.tar.gz
Size 6.8 kB
Tags Source
SHA-256 checksum
How to use checksums
d87a1b8b8ff0f5cc4b1c97dc18ab28b9a1682bc803f5a6878aa3ad8c78e429d3
BLAKE2b-256 checksum
How to use checksums
7cf174329ecd6fa80a0e6998e9828c0b3a816e92ada3c780028dacda64b99ccb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via pdm/2.9.3 CPython/3.11.5

Release files / sanic_wtf-0.7.0-py3-none-any.whl

Download URL sanic_wtf-0.7.0-py3-none-any.whl
Size 5.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
46e60c97019acb59e21292e21a06f74e09e6260e9bf10caf054f4e09f62cb324
BLAKE2b-256 checksum
How to use checksums
4f8e48ffe144b08f20305e867751778c56cbd5f12040ac56b02f33b0cd435b98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via pdm/2.9.3 CPython/3.11.5

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page