Skip to content

mka142/django-react-toolkit

Repository files navigation

django-react-toolkit

Set of tools that gives you easy start with ReactJS integration

About

Main goal of this project is to make django-react apps development and deployment easy in the most easiest way without much interfering to django and react internal project code.

Getting Started

Add django_react_toolkit to your installed apps:

INSTALLED_APPS=[
    ...
    'djnago_react_toolkit',
]

Functionalities:

1. Reverse Proxy server - manage.py runtkserver

⚠️ If you are working with create-react-app to add proxy: django_server to your package.json file and skip this option.

It's django-admin command used to start proxy server that sholud forward django and react traffic to one domain.

Setup

  • Add proxy rule configuration to settings.py
DJ_REACT_PROXY_RULE=[
    #example configuration
    ('127.0.0.1',8000,['/api','/admin','/static']), # for django dev server
    ('127.0.0.1',3000,['.*']),                      # for react server
]
  • Start django and react dev servers:
$ ./manage.py runserver
$ npm start
  • Start proxy server:
$ ./manage.py runtkserver

Since our proxy is running default on port 8080. We can now access our django /api, /admin and /static and react /* from localhost:8080.

2. ServeReactView - django_react_toolkit.views.ServeReactView

Django view that serve us react production build files

Setup

Add configuration to settings.py:


# path to folder where you built your react app
REACT_BUILD_DIR = "/your_react_build_folder/build"

# files that should be served from root path like exmaple.com/favicon.ico
REACT_ROOT_FILES = ['favicon.ico', 'manifest.json', 'robots.txt'] # <= that is default value

# set of paths reserved for django
DJANGO_PATHS = ['api','admin','media','static'])


STATICFILES_DIRS = [
    ...
    REACT_BUILD_DIR / 'static'
]

Include django_react_toolkit urls in urls.py:

urlpatterns = [
    ...
    include('django_react_toolkit.urls`)
]

django_react_toolkit will take every request that does not match your DJANGO_PATHS and serve instead index.html or one of REACT_ROOT_FILES.

If you want some custom urls just import ServeReactView directly:

from django_react_toolkit.views import ServeReactView
...
urlpatters = [
    re_path(r'/react_app/.*',ServeReactView.as_view(),name="serve_react_view")
]

🖋️ If you have some static files (images,fonts,etc.) in react that are in public directory, you can also move them to public/static and after build they will be collected as well as js and css by django collectstatic.

3. ----

Spec:

Varibles:

  • DJ_REACT_PROXY_RULE

    It's list that conatains 3 element touples: (host,port,endpoints_list). host - proxy IP address (default 127.0.0.1) port - port on which proxy will be served endpoints_list - list of valid python regex expressions that should match your route. You need to know that proxy rules are iterated and there is choosed first match, so if you put ['.*'] as an element of first tuple and ['/api'] in secend element, you would never reach /api endpoint. It would look like this:
    DJ_REACT_PROXY_RULE=[
        ('127.0.0.1',3000,['.*']),
        ('127.0.0.1',8000,['/api','/admin','/static']) #this can't be reached
        ]
    
  • REACT_BUILD_DIR

    Path to react build
  • REACT_ROOT_FILES

    List of filenames that should be served from root url. It means all files that directly under build/ dir
  • DJANGO_PATHS

    List of paths that will be reserved for djngo. E.g. api or admin panel etc.

Commands:

  • manage.py runtkserver

    Commad that starts reverse proxy server based on our configuration DJ_REACT_PROXY_RULE. It's used for serving react dev server and django dev server from same domain. manage.py runtkserver [--host (127.0.0.1)] [--port (8080)] For example: manage.py runtkserver --host 192.168.80.2 --port 8098 and then you should reach your server based on proxy rules defined in settings above at: 192.168.80.2:8098.

To Do:

  • django base viewset for session and JWT authentication
  • helper js functions for authentication in react
  • manage.py command that stats reverse proxy server and development server at the same time
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy