Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tastypie如何将模型中的错误正确地反馈给用户?_Python_Django_Tastypie - Fatal编程技术网

Python Tastypie如何将模型中的错误正确地反馈给用户?

Python Tastypie如何将模型中的错误正确地反馈给用户?,python,django,tastypie,Python,Django,Tastypie,我正在使用通过API调用创建用户(请参见下面的API.py)。任何错误都会触发与您所看到的相同的,除了IntegrityError。我想让我的模型向用户返回正确的错误消息。示例见下面的模型管理器,当电子邮件为空时,“必须设置给定电子邮件”错误应作为IntegrityError错误返回给用户 我该怎么做 api.py class CreateResource(ModelResource): """ API Facet that creates and returns a new u

我正在使用通过API调用创建用户(请参见下面的API.py)。任何错误都会触发与您所看到的相同的
,除了IntegrityError
。我想让我的模型向用户返回正确的错误消息。示例见下面的模型管理器,当电子邮件为空时,“必须设置给定电子邮件”错误应作为IntegrityError错误返回给用户

我该怎么做

api.py

class CreateResource(ModelResource):
    """
    API Facet that creates and returns a new user with self.user_email
    as login and self.user_password as password.
    """
    class Meta:
        object_class = CompanyUser
        resource_name = 'accounts/create'
        fields = ['password1', 'password2', 'email', 'company']
        allowed_methods = ['post']
        queryset = CompanyUser.objects.all()
        serializer = urlencodeSerializer()

    def obj_create(self, bundle, request=None, **kwargs):
        try:
            CompanyUser.objects.create_user(email=bundle.data['email'],
                                            company=bundle.data['company'],
                                          )

        except IntegrityError:
            raise BadRequest('Username already exists')
模型管理器

class EmailUserManager(BaseUserManager):

    def create_user(self, email, password=None, **extra_fields):
        """
        Creates and saves an EmailUser with the given email and password.
        """
        now = timezone.now()
        if not email:
            raise ValueError('The given email must be set')
        email = EmailUserManager.normalize_email(email)
        user = self.model(email=email, is_staff=False, is_active=True,
                          is_superuser=False, last_login=now,
                          date_joined=now, **extra_fields)

        user.set_password(password)
        user.save(using=self._db)
        return user
在我看来,我的选择是:

1) 在api.py中,逐个检查所有参数(这似乎很糟糕,因为我的模型已经这样做了),然后针对我的每个问题,即电子邮件空白,增加一个
IntegrityError

if bundle.data['email'] = '':
    raise BadRequest('no email') 

2) 以某种方式将错误从管理器返回到api.py文件,并生成一个动态整数错误。

如果您使用的是TastyPie,则进行查找。然后可以使用forms.py方法进行验证