Skip to main content

django-breeze-logo

Django Breeze

Introduction

Django Breeze provides a minimal and simple starting point for building a Django application with Inertia and Vite.js with minimal or no configuration. Styled with Tailwind CSS.

Inertia helps build single-page apps, without building an API. Create modern single-page React, Vue, and Svelte apps using classic server-side routing. Works with any backend. Documentation for Inertia can be found on the Intertia website.

Setup and Installation

Before installing the packages, ensure you are in your project's virtual environment.

  1. Install the django-breeze package.
pip install django-breeze
  1. Create a new django project if you haven't created one already.
django-breeze startproject myproject

Add the django_breeze to your INSTALLED_APPS in settings.py

INSTALLED_APPS = [
  #..............
  'django_breeze',
  #..............
]

Generate Project Files

Generate your frontend project files with django-breeze, use --typescript option for usage with TypeScript.

React

django-breeze create-app react

Vue 3

django-breeze create-app vue3

After generating your frontend project files, you should see src directory with other relevant files in the root of your django project.

Install the frontend packages

Run this command to install packages for the frontend.

npm install

# or

yarn

Start the Servers

Run the following commands to start your development servers.

  1. Vite server
npm run dev
  1. Django server
python manage.py runserver

Now visit your django host address at e.g http://127.0.0.1:8000/

django-breeze-success-setup screen

Now you're all set!

Usage

Responses

Render Inertia responses is simple, you can either use the provided inertia render function or, for the most common use case, the inertia decorator. The render function accepts four arguments, the first is your request object. The second is the name of the component you want to render from within your pages directory (without extension). The third argument is a dict of props that should be provided to your components. The final argument is template_data, for any variables you want to provide to your template, but this is much less common.

# views.py

from inertia import render
from .models import Event

def index(request):
  return render(request, 'Event/Index', props={
    'events': Event.objects.all()
  })

Or use the simpler decorator for the most common use cases

# views.py

from inertia import inertia
from .models import Event

@inertia('Event/Index')
def index(request):
  return {
    'events': Event.objects.all(),
  }

For more information on the usage, refer to inertia-django Docs.

Production

In production, you must do the following:

  1. In the settings.py
DEBUG = FALSE
  1. Run below command to build your frontend files
npm run build
# or
yarn build
  1. Run below django command to collect static files.
python -m manage.py collectstatic

Settings

Although, djang breeze comes with minimal or no configuration but here are some of the default settings it comes with out of the box.

Django Settings

# settings.py

STATIC_ROOT = "static"

 DJANGO_BREEZE = {
        "INERTIA": {
            "LAYOUT": "index.html",
            "SSR_URL": "http://localhost:13714",
            "SSR_ENABLED": False,
        },
        "DJANGO_VITE": {
            "DEV_MODE": True, # vite dev mode, default based on django DEBUG
            "SERVER_PROTOCOL": "http",
            "DEV_SERVER_HOST": "localhost",
            "DEV_SERVER_PORT": 5173,
            "WS_CLIENT_URL": "@vite/client",
            "ASSETS_PATH": "static/dist", # vite build asset path
            "STATIC_URL_PREFIX": "",
        }
 }

Settings for Inertia Django is under INERTIA and Django Vite is DJANGO_VITE. You can find more explaination of the settings on their repos

Note: All settings are joined with underscore to match how their developers defined them e.g inertia settings is INERTIA_LAYOUT and django vite is DJANGO_VITE_DEV_MODE which has been done automatically by django breeze so you just use the DJANGO_BREEZE settings format in your settings.py file.

Thank you

A very big thanks to the following people for their work done:

License

Django Breeze is open-sourced software licensed under the MIT license.

Metadata

Release files for django-breeze 1.1.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 django-breeze 1.1.0
File Size Uploaded Provenance Actions
django_breeze-1.1.0.tar.gz 336.3 kB Without provenance Details for django_breeze-1.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for django-breeze 1.1.0
File Interpreter ABI Platform Actions
django_breeze-1.1.0-py3-none-any.whl Python 3 none any Details for django_breeze-1.1.0-py3-none-any.whl

Total release size: 700.0 kB

Release files / django_breeze-1.1.0.tar.gz

Download URL django_breeze-1.1.0.tar.gz
Size 336.3 kB
Tags Source
SHA-256 checksum
How to use checksums
e0ba4245e7e16521b3e726f2823d6fef6eeb88ccb03eb22949112b7a420ce535
BLAKE2b-256 checksum
How to use checksums
291e74fbb8a83f1f4ac3819d5205b47d6789b67beb93c1232ce625654c82c43a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.3 Linux/6.8.0-41-generic

Release files / django_breeze-1.1.0-py3-none-any.whl

Download URL django_breeze-1.1.0-py3-none-any.whl
Size 363.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4228520d1e0b9583c308876821549701eb6d420bc2231e4c35f492ea615e04a0
BLAKE2b-256 checksum
How to use checksums
e0855edb1622689b20203a57772fb66ad14ef0f6aeb65c198e292ba8c93ea9d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.3 Linux/6.8.0-41-generic

Security for django-breeze 1.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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