Skip to content

Seamlessly consume RESTful API with all Django flavours

License

Notifications You must be signed in to change notification settings

ult-processor/djangotalkto

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Django TalkTo

Updates Python 3

Overview

Django TalkTo allows you to consume RESTful APIs seamlessly without need to create database

Model
  • TalkToModel, inherits the django Model class, but won't create any migration files, 😃
  • APIManager, inherits Django Manager(I won't touch your DB i promise 😋 )
ModelForm
  • TalkToModelForm, inherits Django ModelForm.
Views
  • TalkToWriteView which makes POST/PUT request to an endpoint (Django CreateView and UpdateView in one pot 😉 )

  • TalkToListView which makes GET request to an endpoint (Django ListView, no bigs)

  • TalkToDetailView which makes GET request with a parameter (Django DetailView)

You can also use Django TalkTo with Django Rest Framework

Serializer
  • TalkToModelSerializer, inherits DRF ModelSerializer, that won't touch the DB, cool right?
View
  • TalkToAPIView which makes POST, GET and PUT requests. DELETE requests coming soon.

Installation

Install using pip

pip install djangotalkto

Notes to Django Rest Framework users

You need to have djangorestframework installed and added to INSTALLED_APPS in settings. You can install it with djangotalkto using

pip install djangotalkto[rest]

Usage

Start a new django project

pip install django
django-admin startproject newproj .
pip install djangotalkto

Add 'talkto' to INSTALLED_APPS in your project settings

Then create TALKTO dict in your settings with the following properties

TALKTO = {
    'default': {
        'URL': 'your-api-base-url', #Important!
        'HEADERS': {key: value}, # You can add your Authorization here
    }

}
Creating your Model
from talkto.models import TalkToModel, APIManager
from django.db import models
class SampleModel(TalkToModel):
    name = models.CharField(max_length=255)
    age = models.IntegerField()
    
    # Then add your APIManager with the variable name 'api'
    
    api = APIManager(path='user/')
    
    # 'path' in this case is the path you will be making your request which is 
    # concatenated with the URL set in TALKTO config in settings.py
Creating your ModelForm is much like the same.
from talkto.forms import TalkToModelForm


class SampleForm(TalkToModelForm):
    class Meta:
        model = SampleModel
        fields = '__all__'
Views
from talkto.views import TalkToWriteView, TalkToDetailView, TalkToListView

class TestCreate(TalkToWriteView):
    form_class = SampleForm
    model = SampleModel
    success_url = reverse_lazy('books')
    template_name = 'index.html'
  
# Detail view
  
class SampleDetail(TalkToDetailView):
    model = SampleModel
    template_name = 'detail.html'
    
    
# List view

class SampleList(TalkToListView):
    model = SampleModel
    template_name = 'detail.html'

URLConf works the same.

Django Rest Framework
Serializer
from talkto.serializer import TalkToModelSerializer

class SampleSerializer(TalkToModelSerializer):
    class Meta:
        model = SampleModel
        fields = '__all__'
API View
class SampleView(TalkToAPIView):
    model = SampleModel
    serializer_class = SampleSerializer

URLConf works the same.


CONTRIBUTING

coming soon....


Supports

As this is still in it's early project there might be some use cases that are not covered. Therefore you can contact me using the following channels.

About

Seamlessly consume RESTful API with all Django flavours

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%