Skip to main content

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

User 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

Metadata

Release files for django-restframework-apiview 1.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-restframework-apiview 1.3.0
File Size Uploaded
django_restframework_apiview-1.3.0.tar.gz 59.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for django-restframework-apiview 1.3.0
File Interpreter ABI Platform
django_restframework_apiview-1.3.0-py3.6.egg Legacy Egg format - - Details
django_restframework_apiview-1.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 302.4 kB

Release files / django_restframework_apiview-1.3.0.tar.gz

Download URL django_restframework_apiview-1.3.0.tar.gz
Size 59.1 kB
Tags Source
SHA-256 checksum
How to use checksums
772460f8e90ce8dfae76f2567345bacd9062045f971439c2f3af236f7fc0ae7f
BLAKE2b-256 checksum
How to use checksums
ca3f9087657f48f831521d56f3506238dd826e796bc6a4601a6280275336fc6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/38.2.4 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

Release files / django_restframework_apiview-1.3.0-py3.6.egg

Download URL django_restframework_apiview-1.3.0-py3.6.egg
Size 166.7 kB
Tags Egg
SHA-256 checksum
How to use checksums
613b3b56559ddee8fae041515b6551476032b391d43ac7621be93f54a56043da
BLAKE2b-256 checksum
How to use checksums
396f8157276f6d137b506ae0183b2c80c8222bb70f6a44c3d326b4c31e9eb6d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/38.2.4 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

Release files / django_restframework_apiview-1.3.0-py3-none-any.whl

Download URL django_restframework_apiview-1.3.0-py3-none-any.whl
Size 76.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1c2666dad94b64ff64c94e87b23085d88253bbd90b557a80ad7a1c0b8369b91e
BLAKE2b-256 checksum
How to use checksums
2ce0c848387d65af8810686de07694945f7dfc4562f7786787e8fcfb30362d58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/38.2.4 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

Release history Release notifications | RSS feed

1.4.3

1 release file

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.27

2 release files

1.3.26

2 release files

1.3.25

1 release file

1.3.22

3 release files

1.3.21

3 release files

1.3.20

3 release files

1.3.19

3 release files

1.3.18

3 release files

1.3.17

3 release files

1.3.16

3 release files

1.3.13

3 release files

1.3.12

3 release files

1.3.10

3 release files

1.3.9

3 release files

1.3.8

3 release files

1.3.7

3 release files

1.3.6

3 release files

1.3.5

3 release files

1.3.4

3 release files

1.3.2

3 release files

1.3.1

3 release files

This release

1.3.0 This release

3 release files

1.2.31

3 release files

1.2.30

3 release files

1.2.28

3 release files

1.2.21

1 release file

1.2.20

1 release file

1.2.19

1 release file

1.2.18

1 release file

1.2.17

1 release file

1.2.16

1 release file

1.2.15

1 release file

1.2.14

1 release file

1.2.13

1 release file

1.2.12

1 release file

1.2.11

1 release file

1.2.10

1 release file

1.2.9

1 release file

1.2.8

1 release file

1.2.7

1 release file

1.2.6

1 release file

1.2.5

1 release file

1.2.4

1 release file

1.2.3

1 release file

1.2.2

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.22

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page