Skip to main content

Django component view for jinjax

Project description

dj_component_view

This project lets you create reusable Django views from jinjax templates.

Usage

Greeting.jinja

<h1>hello, {{ name }}</h1>

views.py

from djecorator import Route
from dj_component_view import component

route = Route()

@route("/components/greet")
@component("Greeting")
def greet(request):
    return {
        "name": request.GET.get("name", "World"),
    }

index.html with htmx

<form hx-get="{{ url('greet') }}" hx-trigger="submit">
  <input type="text" name="name" placeholder="Enter your name" />
  <button type="submit">Greet</button>
</form>

There is also a lower-level API which the component decorator uses under the hood. The ComponentView class inherits from django's own View class.

from dj_component_view import ComponentView
from djecorator import Route

route = Route()

@route("/greet", name="greet")
class GreetView(ComponentView):
    component = "Greeting"

    def render(self, request):
        return {
            "name": request.GET.get("name", "World"),
        }

Specifying the Allowed HTTP Methods

You can set the methods class variable in your ComponentView subclass to specify the allowed HTTP methods for the view. The default value is ["GET"].

  • If methods is set to ["GET"], only GET requests will be allowed.
  • If methods is set to ["POST"], only POST requests will be allowed.
  • If methods is set to ["GET", "POST"], both GET and POST requests will be allowed.
@component("CustomComponent", methods=["post"])
def custom_component(request):
    ...

# or

class CustomView(ComponentView):
    component = "CustomComponent"
    methods = ["post"]

    ...

If the incoming request's method does not match any of the specified methods, a 405 Method Not Allowed response will be returned.

Overriding the get and post Methods

If you need more control over the handling of GET and POST requests, you can override the get and post methods in your ComponentView subclass.

@route("/custom")
class CustomView(ComponentView):
    component = "CustomComponent"
    methods = ["get"]

    def get(self, request, *args, **kwargs):
        # Custom implementation of the GET method
        ...

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

dj_component_view-9.0.tar.gz (4.6 kB view details)

Uploaded Source

Built Distribution

dj_component_view-9.0-py2.py3-none-any.whl (3.7 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file dj_component_view-9.0.tar.gz.

File metadata

  • Download URL: dj_component_view-9.0.tar.gz
  • Upload date:
  • Size: 4.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.1

File hashes

Hashes for dj_component_view-9.0.tar.gz
Algorithm Hash digest
SHA256 3b1d7606c03d7d45d1cb9c75bac223b043ef73f03cdc6a47787ca6c17c8c2b11
MD5 a276c7ae89d44bc29ee19ed62909017c
BLAKE2b-256 daae357578ca8a39ac06d733ce6d0ba0f367650418d5131ae1d8d1138fa73c4b

See more details on using hashes here.

File details

Details for the file dj_component_view-9.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for dj_component_view-9.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 9d10b188466fe8d11f3004b53717c200720198089b46d2249a860f8c794a4a03
MD5 e1f4f12641f120a44156abb81228db8d
BLAKE2b-256 6628dc5519209277d4c076f4eda2ef9a52f94a4a938840190c69023d20b57e33

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page