【发布时间】:2017-08-30 07:16:31
【问题描述】:
我正在用 django-tastypie 编写一个应用程序,下面是我的 models.py 和 resource.py 文件。
模型.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
资源.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 中用 sweetpie 做到这一点。
任何帮助将不胜感激
【问题讨论】: