Django REST_framework APIView
Project description
Screenshots
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Close
Hashes for django_restframework_apiview-1.2.31.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | d87faf7dd1a80c4a50b39b00b2cbc9c1fc32681aea30bf5a6abd9a4ceb51ea59 |
|
MD5 | c65d38fe48960c6b489d2a22b5ae6bd2 |
|
BLAKE2b-256 | 1c87aec0ec2beb09d31027300863e9a62cca1fb952fd71e0dbb8683ca8df458c |
Close
Hashes for django_restframework_apiview-1.2.31-py3.6.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | 26d6e93a5cfcca1ff2cff12c60158e2022861edd553c128ff3ed350d142e4d49 |
|
MD5 | 965e9f3c9db8179314ea5a27c6a2ac91 |
|
BLAKE2b-256 | f62045f7a25cbebdfdf30a0f3d8d0b84b377fc669c475a111a7e890140a1a1ae |
Close
Hashes for django_restframework_apiview-1.2.31-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42c2d539d43e06a5b08026c9e6e823689f7281b919f8c347516a6d3b70101fa7 |
|
MD5 | 2c37c68cf37dd838a29f3c7ef482af19 |
|
BLAKE2b-256 | 0a33782b3b8bda61c175f110f8bfab9e70b2b4504d2848e8e44fcc8b6676a30d |