没有Model/Serializ的Django/Python POST API

2024-09-24 16:30:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个非常简单的API,只有一个端点。 我想向API发送一个json,如: {“提供者”:com.facebook.orca网站", “code”:“1”, “color”:“#fffffff” }在

然后,我想使用python库来控制我房间中的设备(pythonyelelight)。我想使用一个认证令牌或用户名/密码认证。在

我在Django-Rest框架上发现,对于我所需要的(即接受帖子并返回“成功”或“失败”消息)来说太复杂了。在

谢谢你!在


Tags: comapijson密码facebook网站提供者code
1条回答
网友
1楼 · 发布于 2024-09-24 16:30:20

您可以创建一个方法装饰器来实现基本身份验证。使用这个修饰符包装所有的django视图。在

def token_required(function):
    def wrap(request, *args, **kwargs):
        auth_token = request.META.get('HTTP_AUTHORIZATION_TOKEN')
        if auth_token:
            try:
                token = Tokens.objects.get(token=auth_token)
                user = token.user
            except Tokens.DoesNotExist:
                user=None
        else:
            r = {
                    'status': -1,
                    'message': 'Please provide a valid token.'
                }
            return HttpResponse(json.dumps(r), content_type="application/json")
        if user:
            request.user = user
            return function(request, *args, **kwargs)
        else:
            r = {
                        'status': -2,
                        'message': 'User not Authorised, Please login'
                }
            return HttpResponse(json.dumps(r), content_type="application/json")
    return wrap

现在,所有请求都必须包含一个头,如下所示,指向由这个装饰器包装的视图,以检测视图内部的用户。在

AUTHORIZATION-TOKEN:some_TOKEN_值

您的代币模型如下所示。在

^{pr2}$

装饰工使用:

@csrf_exempt
@token_required
def your_view(request):
    pass

我想这应该能帮到你。在

相关问题 更多 >