Skip to main content

Brings async, event-driven capabilities to Django.

Project description

rest_framework_channels

The enhanced modules for REST WebSockets using django channels.

Installation

pip install rest_framework_channels

Introduction

rest_framework_channels is the enhanced modules for REST WebSockets using django channels.

You can use serializers and queryset in rest_framework in rest_framework_channels. Also, we are ready for similar permissions and generics too.

Example

We use the below model and serializer as example.

class TestModel(models.Model):
    """Simple model to test with."""

    title = models.CharField(max_length=255)
    content = models.CharField(max_length=1024)

class TestSerializer(ModelSerializer):
    class Meta:
        model = TestModel
        fields = '__all__'
from rest_framework_channels import generics
from rest_framework_channels.consumers import AsyncAPIConsumer
from rest_framework_channels.permissions import IsAuthenticated

class ChildActionHandler(generics.RetrieveAPIActionHandler):
    serializer_class = TestSerializer
    queryset = TestModel.objects.all()
    permission_classes = (IsAuthenticated,)

class ParentConsumer(AsyncAPIConsumer):
    # You can define the routing inside the consumer similar with original django's urlpatterns
    routepatterns = [
        re_path(
            r'test_child_route/(?P<pk>[-\w]+)/$',
            ChildActionHandler.as_aaah(),
        ),
    ]

When you send the below json after establishing the connection,

{
    'action': 'retrieve', # Similar with GET method of HTTP request
    'route': 'test_child_route/1/',
}

you will get the below response. This mechanism is very similar with original rest_framework!

{
    'errors': [],
    'data': {
        'id': 1,
        'title': 'title',
        'content': 'content'
    },
    'action': 'retrieve',
    'route': 'test_child_route/1/',
    'status': 200,
}

As you can see permission_classes, you will be rejected when you send that json without login.

{
    'errors': ['Some Error Messages']
    'data': None,
    'action': 'retrieve',
    'route': 'test_child_route/1/',
    'status': 403,
}

Details

For more details, see docs.

Development

code

pip install -e .
pip install twine

documentation

cd sphinx
sudo apt-get -y install plantuml
pip install -r requirements.txt
  • generate rst files and html files
cd sphinx
bash build.sh

Reference

This project is VERY inspired by djangochannelsrestframework.

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

rest_framework_channels-0.0.3.tar.gz (18.6 kB view details)

Uploaded Source

Built Distribution

rest_framework_channels-0.0.3-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file rest_framework_channels-0.0.3.tar.gz.

File metadata

File hashes

Hashes for rest_framework_channels-0.0.3.tar.gz
Algorithm Hash digest
SHA256 273ae465ad316832033d51db7cb7295fd66bb921e4f6c7ed709eda0f53c634f7
MD5 dda1f1c81c34f6a574a730bfe5973ae5
BLAKE2b-256 1da3788cf6380fac2713b3aa331976c35566d63c2f2c2930d44e5004ccb0e10c

See more details on using hashes here.

File details

Details for the file rest_framework_channels-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for rest_framework_channels-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 35e41b9d897c36d80781d329cdf8a09f493cf8b3b086cd78f9b18ac10475018b
MD5 7890813f14f5ba633f82117ee39716e3
BLAKE2b-256 875de3153bf3b875d99dba59435186534934e9926f7c8c317342f7e6171195cf

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