Django 如何在TastypieAPI中创建对象?

Django 如何在TastypieAPI中创建对象?,django,api,post,tastypie,Django,Api,Post,Tastypie,我正在为我的Django项目创建一个tastypieAPI。我在django models.py中有一个模型,如下所示: class User(models.Model): nick = models.CharField(max_length = 255) email = models.CharField(max_length = 511) password = models.CharField(max_length = 63) reg_date = models

我正在为我的Django项目创建一个tastypieAPI。我在django models.py中有一个模型,如下所示:

class User(models.Model):
    nick = models.CharField(max_length = 255)
    email = models.CharField(max_length = 511)
    password = models.CharField(max_length = 63)
    reg_date = models.DateTimeField('register date')
    od_user = models.CharField(max_length = 1024)

    def __unicode__(self):
        aux = self.nick + " " + self.email
        return aux
class UserResource(ModelResource):
   class Meta:
      queryset = User.objects.all()
      resource_name = 'user'
      excludes = ['password']
      allowed_methods = ['get', 'post', 'put', 'delete']
      authorization = Authorization()
      always_return_data=True

   def obj_create(self, bundle, request=None, **kwargs):
      username, password = bundle.data['nick'], bundle.data['password']
      try:
          bundle.obj = User(nick, "email@test", password,timezone.now(),"od_test")
          bundle.obj.save()
      except IntegrityError:
          raise BadRequest('That username already exists')
      return bundle
我还有一个用于我的Tastypie API的ModelResource,如下所示:

class User(models.Model):
    nick = models.CharField(max_length = 255)
    email = models.CharField(max_length = 511)
    password = models.CharField(max_length = 63)
    reg_date = models.DateTimeField('register date')
    od_user = models.CharField(max_length = 1024)

    def __unicode__(self):
        aux = self.nick + " " + self.email
        return aux
class UserResource(ModelResource):
   class Meta:
      queryset = User.objects.all()
      resource_name = 'user'
      excludes = ['password']
      allowed_methods = ['get', 'post', 'put', 'delete']
      authorization = Authorization()
      always_return_data=True

   def obj_create(self, bundle, request=None, **kwargs):
      username, password = bundle.data['nick'], bundle.data['password']
      try:
          bundle.obj = User(nick, "email@test", password,timezone.now(),"od_test")
          bundle.obj.save()
      except IntegrityError:
          raise BadRequest('That username already exists')
      return bundle
但这不起作用。我已经看过了,但我不知道如何在我的数据库中创建用户

我使用:

   curl -v -H "Content-Type: application/json" -X POST --data '{"nick":"test2", "password":"alparch"}' http://127.0.0.1:8000/api/v1/user/?format=json
做贴子的方法


如何使用tastypieapi创建对象

您不能以以下方式创建具有位置参数的用户:

User(nick, "email@test", password,timezone.now(),"od_test")
相反,必须使用关键字参数:

User(nick=nick,
     email="email@test",
     ...
     )

它怎么不起作用?当你发帖时会发生什么?是否有错误?错误为:“error_message”:“int()的文本无效”使用BASIC 10:“Test2”Test2是NoK的名字,我认为您应该使用<代码> >用户> /代码>模型,该代码包含在<代码> Django.Curib.Auth中。通过编写您自己的函数,您将丢失一些功能,例如,您正在存储未加密的密码,这是不安全的。我知道,但我想手动进行。这只是一个测试。使用SHA-512算法将简历保存到密码。感谢您的评论!!