Django_restframework_apiview

Django REST_framework APIView
Alternatives To Django_restframework_apiview
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Python 100 Days135,076
a month ago682Python
Python - 100天从新手到大师
Django Rest Framework25,66624,5951,508a day ago134December 15, 2021132otherPython
Web APIs for Django. 🎸
Awesome Django7,045
6 days ago2cc0-1.0HTML
A curated list of awesome things related to Django
Drf Yasg3,0922907619 days ago59October 25, 2020235otherPython
Automated generation of real Swagger/OpenAPI 2.0 schemas from Django REST Framework code.
Django Rest Swagger2,5162,031413 years ago50April 30, 2018168bsd-2-clausePython
Swagger Documentation Generator for Django REST Framework: deprecated
Django Rest Auth2,3311,1092410 months ago25April 01, 2019234mitPython
This app makes it extremely easy to build Django powered SPA's (Single Page App) or Mobile apps exposing all registration and authentication related functionality as CBV's (Class Base View) and REST (JSON)
Djoser2,288212511 days ago48October 30, 2020166mitPython
REST implementation of Django authentication system.
Drf Nested Routers1,4876212913 days ago19October 15, 202146apache-2.0Python
Nested Routers for Django Rest Framework
Cookiecutter Django Rest1,405
4 days ago4mitPython
Build best practiced apis fast with Python3
Drf Extensions1,371323149 days ago16July 30, 202175mitPython
DRF-extensions is a collection of custom extensions for Django REST Framework
Alternatives To Django_restframework_apiview
Select To Compare


Alternative Project Comparisons
Readme

Django REST_framework APIView

https://travis-ci.org/007gzs/django_restframework_apiview.svg?branch=master

Screenshots

https://github.com/007gzs/django_restframework_apiview/raw/master/img/demo.jpg

Use in your app

Install using pip:

pip install django_restframework_apiview

Add 'apiview' to your INSTALLED_APPS setting:

INSTALLED_APPS = (
    ...
    'apiview',
)

JSONP Renderer And debug apiview with paramslist:

REST_FRAMEWORK = {
    ...
    'DEFAULT_RENDERER_CLASSES': [
        ...
        'apiview.renderers.JSONPRenderer',
    ],
}
if DEBUG:
    REST_FRAMEWORK['DEFAULT_RENDERER_CLASSES'].append('apiview.renderers.BrowsableAPIRenderer')

Add error code to settings.py:

ERROR_CODE_DEFINE = (
    ('ERR_AUTH_NOLOGIN',            10001,  'No login'),
    ('ERR_AUTH_USER_EXISTS',        10002,  'User name has exists'),
    ('ERR_AUTH_USER_NOT_EXISTS',    10003,  'User not exists'),
    ('ERR_AUTH_PASSWORD',           10005,  'Password error'),
)

edit myapp/views.py:

#! usr/bin/env python
# encoding: utf-8
from __future__ import absolute_import, unicode_literals

from django.db import IntegrityError, transaction
from django.contrib.auth import authenticate, login
from django.contrib.auth.models import User
from apiview.err_code import ErrCode
from apiview.exceptions import CustomError
from apiview.view import APIView
from apiview.views import ViewSite
from apiview.views import fields


site = ViewSite(name='base', app_name='base')


class APIBase(APIView):

    class Meta:
        path = '/'
        param_fields = (
            ('channel', fields.CharField(help_text='App Channel', required=False)),
            ('version', fields.CharField(help_text='App Version', required=False)),
        )


class UserAPIBase(APIBase):

    def check_user_permission(self, request):
        user = request.user
        if not user.is_authenticated() or not isinstance(user, User):
            raise CustomError(ErrCode.ERR_AUTH_NOLOGIN)

    def view(self, request, *args, **kwargs):
        self.check_user_permission(request)
        return super(APIBase, self).view(request, *args, **kwargs)

    class Meta:
        path = '/user'


@site
class Login(APIBase):

    name = ''

    def get_context(self, request, *args, **kwargs):
        user = authenticate(username=request.params.username, password=request.params.password)
        if user is None:
            raise CustomError(ErrCode.ERR_AUTH_PASSWORD)
        login(request, user)
        return self.get_default_context(user_info={'username':request.user.username, 'email':request.user.email})

    class Meta:
        path = 'user/login'
        param_fields = (
            ('username', fields.CharField(help_text='')),
            ('password', fields.CharField(help_text='')),
        )


@site
class Register(APIBase):

    name = ''

    def get_context(self, request, *args, **kwargs):
        try:
            user = User.objects.create_user(request.params.username, request.params.email, request.params.password)
        except IntegrityError:
            raise CustomError(ErrCode.ERR_AUTH_USER_EXISTS)
        return self.get_default_context()

    class Meta:
        path = 'user/register'
        param_fields = (
            ('username', fields.RegexField(help_text='', regex=r'^[a-zA-Z0-9_]{3,10}$')),
            ('password', fields.CharField(help_text='')),
            ('email', fields.EmailField(help_text='Email')),
        )

@site
class Info(UserAPIBase):

    name = ''

    def get_context(self, request, *args, **kwargs):
        user_info = {'username':request.user.username, 'email':request.user.email}

        return self.get_default_context(user_info=user_info)


@site
class Logout(UserAPIBase):

    name = ''

    def get_context(self, request, *args, **kwargs):
        logout(request)

        return self.get_default_context()

urlpatterns = site.urlpatterns

add to urls.py end:

urlpatterns.append(url(r'^test/', include("myapp.views")))

Example

run example:

git clone https://github.com/007gzs/django_restframework_apiview.git
cd django_restframework_apiview/example
pip install -r requirements.txt
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
open http://127.0.0.1:8000/example.html in browser
api demo::
http://127.0.0.1:8000/example/param_filed_info
Popular Django Projects
Popular Rest Projects
Popular Frameworks Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Python
Django
Rest
Renderer
Jsonp