【问题标题】:How I can create an object in Tastypie API?如何在 Tastypie API 中创建对象?
【发布时间】:2012-08-12 17:35:01
【问题描述】:

我正在为我的 Django 项目创建一个 Tastypie API。我在 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

我的 Tastypie API 也有一个 ModelResource,如下所示:

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

但这不起作用。我看过How to create or register User using django-tastypie API programmatically?,但我不知道如何在我的数据库中创建用户。

我用:

   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

做POST方法。

如何使用 Tastypie API 创建对象?

【问题讨论】:

  • 怎么不工作?发帖时会发生什么?有错误吗?
  • 错误是 :"error_message": "invalid literal for int() with base 10: 'test2' test2 是我发布的昵称
  • 您应该考虑使用django.contrib.auth 中包含的User 模型。通过自己编写,您会失去一些功能——例如,您正在存储一个未加密的密码,这是不安全的。
  • 我知道,但我想手动完成。这只是一个测试。然后我使用 SHA-512 算法将简历保存到密码中。感谢您的评论!

标签: django api post tastypie


【解决方案1】:

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

User(nick, "email@test", password,timezone.now(),"od_test")

相反,您必须使用关键字参数:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 2013-11-02
    • 1970-01-01
    • 2021-09-08
    相关资源
    最近更新 更多