繁体   English   中英

处理DeliciousPie和Django API的请求数据

[英]Manipulate Request data of TastyPie and Django API

我正在用django-tastypie编写应用程序,以下是我的models.py和resource.py文件。

Models.py:

import uuid

from django.db import models


class User(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=50, null=False)
    email = models.EmailField(max_length=254, null=False)
    password = models.CharField(max_length=100, null=False)
    role = models.CharField(max_length=16, default='basic', null=False)

    def __unicode__(self):
        return self.name, self.email

Resources.py:

from tastypie.resources import ModelResource
from tastypie.authorization import Authorization

from api.models import User


class UserResource(ModelResource):
    class Meta:
        queryset = User.objects.all()
        resource_name = 'user'
        authorization = Authorization()
        excludes = ['password']
        #allowed_methods = ['get']

现在的问题是,每当我从邮递员到达API终点时,便会直接创建用户。 现在我不明白的是,请求数据是进入资源,然后进入数据库还是直接进入数据库? 实际上,我需要对数据进行一些更改,然后再将其存储在数据库中,例如对密码进行哈希处理,然后将对象存储在数据库中。 我是django的新手,那么如何实现呢? 像在Flask中一样,我们可以执行以下操作:

@user.route('/users', methods=['POST'])
def create_user(user_id):

    data = request.get_json(force=True)

    # do all the changes we want

    user = User(data)
    db.session.add(user)
    db.session.commit()

现在,如果有任何请求来自'/ users'端点,我们可以在'data'变量中获取它的数据,然后在存储到数据库中之前进行任何想要的更改。 但是,如何在Django中用好吃的东西做到这一点。

任何帮助,将不胜感激

如果您在进入database之前必须按摩数据,那么Tastypie具有hydratedehydrate方法的概念。

检查一下。 这是参考水合物和脱水物

在每个Web框架中,与请求一起发送的数据都是通过某种机制传递给api端点的,并且相同的事情发生在Deliciouspie中(您可以在Thastypie文档中的“ 通过请求/响应周期流动”中进行阅读)。

如果您想更改发送/接收的有关Hydrate / Dehydrate的数据 ,在您的情况下,您想在用户密码上使用dehydrate,但我建议您节省精力,而是通过从AbstractUser继承来使用自定义用户模型,当用户对象保存到数据库时,默认情况下您可以获得哈希密码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM