django-apiview
A set of django tools to help you create JSON service.
Install
pip install django-apiview
Installed Decorators
- @apiview
- @requires(*parameter_names)
- @choices(field, choices, allow_none=False)
- @between(field, min, max, include_min=True, include_max=True, annotation=Number, allow_none=False)
- @rsa_decrypt(field, private_key_instance)
- @meta_variable(variable_name, meta_name)
- @cache(key, expire=None, cache_name="default", get_from_cache=True, set_to_cache=True)
- @safe_apiview
Note:
- @apiview
- apiview = Apiview(SimpleJsonPacker())
- @safe_apiview
- Requires django_middleware_global_request, see django_middleware_global_request's usage at https://pypi.org/project/django-middleware-global-request/.
- Requires server rsa settings: RSA_PRIVATEKEY_STRING, RSA_PRIVATEKEY (load RSA_PRIVATEKEY_STRING as RsaKey)
- @cache
- Optional setting: DJANGO_APIVIEW_DISABLE_CACHE_HEADER_NAME = "HTTP_DISABLE_CACHE"
- Optional setting: DJANGO_APIVIEW_DEFAULT_CACHE_EXPIRE = None
Usage
Note:
- You DON'T need to put django_apiview into INSTALLED_APPS.
- Apiview always set csrf_exempt=True.
- @apiview or @safe_apiview decorator must be the first decorator.
- Return raw data without serialized, we'll do result pack for you.
app/views.py
import time
from django_apiview.views import apiview
from django_apiview.views import requires
from django_apiview.views import choices
from django_apiview.views import between
@apiview
def ping():
return "pong"
@apiview
def timestamp():
return int(time.time())
@apiview
@requires("msg")
def echo(msg: str):
return msg
@apiview
def getBooleanResult(value : bool):
return value
@apiview
def getIntegerResult(value: int):
return value
@apiview
def getBytesResult(value: bytes):
return value
@apiview
@choices("op", ["+", "-", "*", "/"])
@between("a", 2, 10, include_min=False)
@between("b", 2, 10, include_max=False)
def calc(a: int, op: str, b: int):
if op == "+":
return a + b
if op == "-":
return a - b
if op == "*":
return a * b
if op == "/":
return a / b
@safe_apiview(get_client_rsa_publickey=get_client_rsa_publickey)
def safe_ping():
return "pong"
Bug report
Please report any issues at https://github.com/zencore-cn/zencore-issues.
Releases
v0.6.0 2020/09/06
- Add safe_apiview.
v0.5.0 2020/08/13
- Add cache decorator.
- Add func's default values to View.data.
v0.4.0 2020/08/06
- Add meta_variable decorator.
- Datetime value encode to native time, and in format like
2020-08-06 14:41:00.
v0.3.4 2020/07/26
- Fix BizError class check problem.
v0.3.3 2020/07/24
- Add rsa_decrypt decorator.
v0.3.2 2020/07/18
- Add Apiview class based implementation.
- Add setup_result_packer api.
- Rename simple_json_result_packer to simple_result_packer.
v0.3.1 2020/07/01
- Change app name from
apiviewtodjango_apiview. - Add parameter validators.
WARN: NOT backward compatible.
v0.2.0
- Using fastutils.typingutils for annotation cast.
- Add result pack mechanism.
- Move example views from the main app to example app and the example app is not include in published package.
v0.1.3
- Add logging while getting result failed in @apiview.
- Add Map, List annotations.
v0.1.2
- Fix form process problem.
v0.1.1
- Add PAYLOAD injection, PAYLOAD field has low priority.
v0.1.0
- First release,
Metadata
Release files for django-apiview 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| django-apiview-0.6.0.tar.gz | 7.7 kB | Without provenance | Details |
Release files / django-apiview-0.6.0.tar.gz
| Download URL | django-apiview-0.6.0.tar.gz |
|---|---|
| Size | 7.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0bf394dc05aac64b16cace5454ac93d1ae03f00ca19ad4683111157e5de6b16d
|
|
BLAKE2b-256 checksum How to use checksums |
442bea4923536d7570074e301a0798bb441ad56c9efe74672e4bb3dcff70e96f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7
|
Security for django-apiview 0.6.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.