json api应该像“dict”和状态代码一样简单:)
django-raw-api的Python项目详细描述
django原始api
json api应该像dict
和状态代码一样简单:)
你好,世界
fromraw_apiimportvalidate_json@validate_json({"name":str})defhello(request):name=request.json["name"]ifname=="world":return{"message":"too corny"},400return{"hello":name}
设置
- 从pypi安装:
pip install django-raw-api
- 将
raw_api.middleware
中间件添加到MIDDLEWARE
列表中
API
中间件
它添加lazyrequest.json
属性并序列化原始响应,如
dict
或(data: dict, status: int)
转换为json。
请求
request.json
-解析的jsonrequest.query
-解析查询(仅在@validate_query
之后)
响应
您可以只返回日期的dict
,也可以添加状态代码
defjson_data(request):return{"hello":"world"}defwith_status(request):return{"message":"bad request"},400
认证
装饰符@user_required
和@staff_required
类似于
@login_required
和@staff_member_required
使用json输出而不是
重定向
fromraw_apiimportstaff_required@staff_requiredasyncdefhello(request):return{"admin":"zone"}
数据验证
您可以使用@validate_query
和@validate_json
装饰符
以验证请求数据。他们用trafaret库来执行
验证。
fromraw_apiimportvalidate_json,validate_query@validate_json({"ids":[int],"hello?":str})asyncdeffoo(request):returnrequest.json@validate_query({"id":int})asyncdefbar(request):assertisinstance(id,int)returnrequest.query
测试
python -m venv .venv
source .venv/bin/activate
pip install -Ur requirements-dev.txt
python -m pytest tests