# Upgrade Django v3.1.x

## Release Highlights
- Support for a [fully asynchronous request path](https://docs.djangoproject.com/en/3.1/releases/3.1/#asynchronous-views-and-middleware-support)
    - Refer to [Django's Async support](https://docs.djangoproject.com/en/3.1/topics/async/) docs for more details
- `models.JSONField` and `forms.JSONField` are now available for all [supported database backends](https://docs.djangoproject.com/en/3.1/releases/3.1/#jsonfield-for-all-supported-database-backends)
- Increased support for [pathlib.Path](https://docs.python.org/3/library/pathlib.html#pathlib.Path)
    - The `settings.py` generated by `startproject` now uses `pathlib.Path` instead of `os.path` for [building filesystem paths](https://docs.djangoproject.com/en/3.1/releases/3.1/#miscellaneous)
    - [Multiple](https://docs.djangoproject.com/en/3.1/releases/3.1/#django-contrib-staticfiles) other [settings](https://docs.djangoproject.com/en/3.1/releases/3.1/#email) or [methods](https://docs.djangoproject.com/en/3.1/releases/3.1/#file-storage) that use a file path now support `pathlib.Path`

## Upgrade Gotchas
- If you're using a third-party database backend, there are [multiple changes](https://docs.djangoproject.com/en/3.1/releases/3.1/#database-backend-api) you may need to make.
- Support for MariaDB 10.1 [has ended](https://docs.djangoproject.com/en/3.1/releases/3.1/#dropped-support-for-mariadb-10-1). 10.2 and higher are supported
- `contrib.admin` no longer supports the legacy [Internet Explorer](https://docs.djangoproject.com/en/3.1/releases/3.1/#contrib-admin-browser-support)
- Multiple [compatibility imports](https://docs.djangoproject.com/en/3.1/releases/3.1/#id1) have been removed
- Features deprecated in Django 2.2 [have been removed](https://docs.djangoproject.com/en/3.1/releases/3.1/#features-removed-in-3-1)

Source: https://upgradedjango.com/3.1/
