【问题标题】:Django Rest API for simple python dictionary用于简单 python 字典的 Django Rest API
【发布时间】:2020-10-25 22:38:18
【问题描述】:

我是 Django 新手,我想制作一个简单的 RESTful API,它会在从邮递员调用它时以 JSON 格式返回 Python 字典。我已经设置了我的项目文件夹并安装了 RestfulAPI 框架,还配置了我的 settings.py 例如, 在 dictionary.py 我有以下代码

dataDictionary = { 
            'hello': 'World', 
            'geeks': 'forgeeks', 
            'ABC': 123, 
            456: 'abc', 
            14000605: 1, 
            'list': ['geeks', 4, 'geeks'], 
            'dictionary': {'you': 'can', 'send': 'anything', 3: 1} 
        } 

我想通过使用 POST 方法输入 URL http://127.0.0.1:8000/getdata/ 从 Postman 调用它时返回这个字典。 我附上了 Django APP VIEW 图片。 Django_APP

【问题讨论】:

    标签: python django api


    【解决方案1】:

    您需要导入几项内容来配置基本 API 视图:

    from rest_framework.renderers import JSONRenderer
    from rest_framework.response import Response
    from rest_framework.decorators import api_view, renderer_classes, permission_classes
    from rest_framework.permissions import AllowAny
    from rest_framework.permissions import IsAuthenticated
    
    @api_view(['POST', 'GET'])
    @renderer_classes((JSONRenderer,))
    @permission_classes([AllowAny,])
    def sample_view(request):
        dataDictionary = { 
            'hello': 'World', 
            'geeks': 'forgeeks', 
            'ABC': 123, 
            456: 'abc', 
            14000605: 1, 
            'list': ['geeks', 4, 'geeks'], 
            'dictionary': {'you': 'can', 'send': 'anything', 3: 1} 
        } 
        return Response(dataDictionary)
    

    注意使用的三个装饰器。 @render_classes 带元组,JSONRenderer 用于渲染 json,@api_view 用于指定这是一个获取 POSTGET 作为合法请求的 API 视图,@permission_classes[AllowAny,] -获取访问权限列表。 如果要限制,可以指定IsAuthenticated 或任何其他。 这是一个非常基本的视图示例,您可以将其用作起点。当然你需要用你的urls.py注册它并提供一个路径。

    【讨论】:

    • 有什么方法可以代替在views.py中编写整个代码,而是将此代码编写在不同的文件中,例如dictionary.py,并将此文件保存在同一个项目文件夹下? like request 来自 sample_view 方法,从这里它转到 dictionary.py 文件并获取 datadictionary 变量并返回 sample_view 并返回 Response >?
    • @MuhammadUsman 只要您的视图可以在 urls.py 中导入,它在哪里声明都没有关系,只需要导入和注册即可。将所有视图保存在一个位置会更方便,这样代码会变得更简洁、更有条理。
    猜你喜欢
    • 2011-07-10
    • 2018-12-10
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 2013-01-15
    • 2014-08-28
    相关资源
    最近更新 更多