[英]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
具有hydrate
和dehydrate
方法的概念。
检查一下。 这是参考水合物和脱水物
在每个Web框架中,与请求一起发送的数据都是通过某种机制传递给api端点的,并且相同的事情发生在Deliciouspie中(您可以在Thastypie文档中的“ 通过请求/响应周期流动”中进行阅读)。
如果您想更改发送/接收的有关Hydrate / Dehydrate的数据 ,在您的情况下,您想在用户密码上使用dehydrate,但我建议您节省精力,而是通过从AbstractUser继承来使用自定义用户模型,当用户对象保存到数据库时,默认情况下您可以获得哈希密码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.