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-解析的json
  • request.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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java不可访问配置设计   在java中使用json就像在javascript中一样   java如何屏蔽Android 4.0主密钥   java为什么clickable的预期条件不执行click()?   Azure事件中心:Kafka消费者在java中不轮询任何内容   javajaxb和enum实现接口   java如何在标记下添加ProgressBar和按钮   java如何为对象实现arrayList   使用多重匹配重载java构造方法重载   java使用for循环和if语句搜索帐户   java JPanel在JPanel中添加了顶部填充   IntelliJ将Java项目/模块转换为Maven项目/模块   java如何迭代arraylist中的arraylist   自定义类的java“找不到符号”错误